Here's a proof that doesn't require the law of cosines.

Consider the expression f(t) = |u + tv|^2 = (u+tv)*(u+tv). Obviously, f(t) >=0 for all t.

Expand:

f(t) = u*u + tu*v + tv*u + t^2v*v

= |u|^2 + 2tu*v + t^2|v|^2

= c + bt + at^2

with c = |u|^2, b = 2u*v, a = |u|^2.

This is a quadratic function that is never negative (has at most one real zero).

Thus the discriminant, b^2-4ac is non-positive, b^2-4ac <=0 and thus

4(u*v)^2 < 4|u|^2|v|^2.

Divide by 4 and take the square root, and you get the result:

|u*v| <= |u||v|.

The law of cosines (in any dimension) then is a consequence, or rather you can define the angle theta between two vectors u,v by u*v = |u||v|cos(theta).

Hope this helps