As your question has already got very good answers, I want to add just a clarification on usage.
The three expressions
Sin[x]
Sin@x
x // Sin
Are equivalent.
Although, to my knowledge, the last two can't be used with functions with more than one argument. So
Plot[Sin[x], {x, 0, Pi}]
Can't be invoked in prefix or postfix notation without tricks like
Sin[x] // Plot[#, {x, 0, Pi}] &
or
Plot[#, {x, 0, Pi}] &@Sin[x]
The prefix notation is usually seen when using simple functions like Sin@x or Sort@list, while most uses of the postfix involve a reasoning like "and now do whatever with this thing I got", for example
(Sin@x+ ...) // Timing
where you decided what to calculate, and then you also want it timed.
One more note:
Really there is much more under the scenes, as the priority of each of these functional constructs is different, but I think that is a much deeper subject and you have to experiment a little before going for subtleties.
FullForm[Hold[stuff]]. Also tryTreeForm[Hold[stuff]]- Yaroslav Bulatov