Okay, I promised that I would explain, so here goes:
The text in blue are the calculations for this example, in black the explanations in a general case
Let's take a simple example
In blue is the original movement of the ball.
In this example:
Ball#1: angle=0°, size=5
Ball#2: angle=90°, size=5
Impact angle=45°
What happens?
On contact there is a force from ball#1 on ball#2.
Now because of different angles only a part of the energy is transferred, I believe it's some scalar product of the blue and the grey vectors.
The magnitude of the impact is the size of the green vector, this is r*cos(α-β) where α is the angle of impact, β is the incoming angle of Ball#1 and r the 'speed' of Ball#1.
This is the effective amount of 'energy' that will be transferred.
Okay the impact vector has a size of 5*cos(45°-0°)=±3.54 (5*√(2)/2)
and an angle of atan((y2-y1)/(x2-x1)), here 45°.
Now we have two vectors, simply add them. The red vector is the new vector of Ball#2.
It is definately easy when you represent vectors with deltax and deltay, then you just have to add them.
But how do you add 2 vectors when all you have are 2 angles and 2 sizes?
But what happens with ball#1?
There comes Newton!
His third law of motion says:
Newton wrote:"to every action force there is an equal, but opposite, reaction force".
Simply add it with the original vector
The final result, compare it with the first image, if you don't believe me, take 2 tennisballs and roll them against each other
This also applies when 2 balls roll into each other, then you just have to do this calculation 2 times, one for Ball#1 rolling into Ball#2 and another time for Ball#2 rolling into Ball#1
Only one thing remains... How do you add 2 vectors when all you have are 2 angles and 2 sizes?
EDIT: Ok, it is very difficult with polar coords, on to the deltax-deltay method...