I do not understand the way you defined those angle?
I would suggest you use (x,y,z) coordinate.
[img]http://www.phy.ntnu.edu.tw/demolab/phpBB/pics/2_2_collision2d.png[/img]


Assume \vec{r_a} and \vec{r_b} are center of those two balls. And the radius are R_a,R_b.
Let \vec{d}= \vec{r_a}-\vec{r_b} which is the relative vector between two centers.
Collision occurred if the length |\vec{d}|<R_a+R_b:
The next step is to find two components of velocity vectors \vec{V_a}=(V_{ax},V_{ay},V_{az}),\vec{V_b}=(V_{bx},V_{by},V_{bz}):
 1. velocity components parallel to \vec{d}=(d_x,d_y,d_z)
 \vec{V}_{ap}=\vec{V_a}\cdot \vec{d}/|\vec{d}|,\vec{V}_{bp}=\vec{V_b}\cdot \vec{d}/|\vec{d}|
 The time step to move backward dt=\frac{R_a+R_b-|\vec{d}|}{|\vec{V}_{ap}-\vec{V}_{bp}|}

Hints: how to calculate inner product \vec{V_a}\cdot \vec{d}=V_{ax}*d_x+ V_{ay}*d_y+V{az}*dz

 2. velocity components perpendicular to \vec{d}
\vec{V_{an}}=\vec{V_a}-\vec{V_{ap}}, \vec{V_{bn}}=\vec{V_b}-\vec{V_{bp}}
The above two component will not change before and after collision


You can check out previous posted message. e.g. [url=http://www.phy.ntnu.edu.tw/ntnujava/index.php?topic=4.msg9#msg9]How to convert 2D collision into 1D[/url]

Just add one more component (z) if you want to transfer from 2D(x,y)to 3D(x,y,z).

It will be much easier if understand the meaning of inner product between two vectors- Help you find out projection of one vector into another vector.