In my quantum computation course, we have been given nothing more than the basic axioms of a linear vector space, and and the properties of an inner product; but we have started referring to "the angle between two vectors", and are even using
$$\left<a|b\right>=\|a\|\|b\|\cos \theta_{a,b}$$
as if it were obviously true. I can see how the above is arrived at from the law of cosines, and that it can be easily derived in the case of real vectors in two dimensions, but what justifies the generalization of the concept of "angle" in this way to arbitrary dimensions and vectors with complex coefficients?
Given nothing but (a) a linear vector space with (b) an inner product, how do I arrive at the law of cosines or, equivalently, the identity above and thus the concept of an "angle"?