You might want to explore the FullForms of the alternative expressions to see clearly the difference.
Clear[fu];
c_ /; FreeQ[c, fu] fu[w] // FullForm
fu[c_ /; FreeQ[c, fu] fu[w]] = ok // FullForm
fu[w fu[w]] // FullForm
gives:
Condition[Pattern[c,Blank[]],Times[FreeQ[c,fu],fu[w]]],
ok
$RecursionLimit::reclim2: Recursion depth of 1024 exceeded during evaluation of FreeQ[w,fu] fu[w].
fu[Times[w,fu[w]]]
Whereas:
Clear[fu];
(c_ /; FreeQ[c, fu]) fu[w] // FullForm
fu[(c_ /; FreeQ[c, fu]) fu[w]] = ok; // FullForm
fu[w fu[w]] // FullForm
gives:
Times[Condition[Pattern[c,Blank[]],FreeQ[c,fu]],fu[w]]
Null
ok