Everything in Mathematica has a precedence, including semicolon! That is similar to 3+4*5 meaning the multiplication is done before the addition. So the way you have it written above says the definition of your calc function ends with your first semicolon and then your second Module will calculate a result without waiting for you to later use your calc function.
Try writing really really simple Modules that just print which module just executed and see if you can figure out how your code would run.
If you were to write calc[r1_, etc]:= (Module[stuff];Module[morestuff]) then the () changes the order of operations. So when you use calc it will do the first module, throw away the result, do the second module and return that as the value of your calc function.
So what can you do? Well you could do this
calc[r1_, r3_, r4_, ϕ_, ψ_] :=
{ N[√((r3 Cos[ϕ Degree] - r1 Cos[ψ Degree])^2 +
(r3 Sin[ϕ Degree] - r1 Sin[ψ Degree])^2)],
{AngleVector[{r1, ϕ Degree}],
AngleVector[{r3, ψ Degree}],
AngleVector[{-r4, 0}]
}
};
That will calculate both results, put them in a list and return that as the value of your calc function. Then you could use calc[stuff][[1]] to extract the first value or calc[stuff][[2]] to extract the second list of three values.
Or you could add an extra final argument to calc, which would be either True or False, and use an If function inside the definition of calc to decide which calculation to do.
Notice that I didn't even use Module in this. That was because you didn't have enough reason to have "local variables", etc. and just the expressions you wanted were able to be used on their own. In other words I tried to simplify your code down to just the bare amount needed.
Hopefully this gives you some ideas to think about and perhaps you can progress to the next level of understanding.
Module[{r2_},...
. $\endgroup$