I have a vector v and I want to know its angle from "12 o'clock" (i.e. u=(0,1) going straight up). According to the Internet, I can use the formula as follows.
p = u * v = 0*v_x + 1*v_y = v_y
m = |u| = 1
n = |v| = sqrt(v_x^2 + v_y^2)
a = acos(p / m / n)
What doesn't make sense to me is that we apparently only consider the vertical dimension of the vector. I don't get it and it feels plain wrong. I must be missing something but I can't see what. Is the formula only applicable for certain angles (like the first quadrant or such)?
You are wrong to say that it only depends on the vertical dimension of the vector $v_y$. Note that $v_x$ is a hidden term in $n$, which you divide by to compute the angle.
Computing angles between vectors amounts to solving the formula $$v\cdot w = |v||w|\cos\theta,$$ where $\theta$ is the angle between the vectors. Again, you should read a little about dot products, since they come up all the time in geometry.