I can reproduce this behavior like this:
y' = y^2;
s = NDSolve[{y'[x] == y[x], y[0] == 1}, y, {x, 0, 1}]
NDSolve::dvnoarg: The function y appears with no arguments. >>
(* NDSolve[{(y^2)[x] == y[x], y[0] == 1}, y, {x, 0, 1}] *)
Executing Clear[y, x] or even ClearAll[y, x] won't work because the problem is stored in the SubValues for Derivative:
SubValues[Derivative]
(* {HoldPattern[Derivative[1][y]] :> y^2} *)
(Note that this does not set a value for y'' (i.e. Derivative[2][y]) so "second order derivatives work fine" as the OP observed.)
If we clear Derivative, it will work:
ClearAll[Derivative]
s = NDSolve[{y'[x] == y[x], y[0] == 1}, y, {x, 0, 1}]
(* {{y->InterpolatingFunction[{{0.,1.}},<>]}} *)
Alternatively, quitting the kernel is a common way to reset confusing behavior such as this.
If this is the answer (the problem is yet unclear), then these answers address the same issue:
As @halirutan said in one of the answers, this is very tricky to track down.