Small nit: Dot products have nothing directly to do with angles. Dot product returns the projection of one vector onto the basis of the other vector, scaled by the length of the other vector.
IF both vectors are normalized before dotting, AND you then call arc-cos on the value, then you get one of the two possible angles between the vectors in the plane shared by those vectors. This is almost never what you want to do, though – thinking of vectors as “angles” will lead you wrong-and-expensive more often that it will lead you right. The only case where you want angles, is when interacting with users in terms of angles, which comes up both in places like animation (tools,) and in places like compass headings.