The question sounds like it is describing a problem with object penetration. (When one circle is overlapping the other and it causes the deflection to be calculated wrong).
This is a problem with the precision of the collision tests. If I have understood the problem correctly, what is happening is that collision detection only happens once per frame but the object is moving too fast in a single frame. The collision with the correct edge is missed. When the collision test occurs, the object has already passed through and is then deflected off the other side.
The key thing to fix this is to limit the speed of your moving objects to less than half their width. This would ensure that your collision is always detected on the correct side. This will still allow objects to penetrate though and anytime you have object penetration your physics will be inaccurate, though it's often good enough.
You can improve on this by offsetting the penetrating objects so that they are just touching (IE. rewind to the point where they actually collided), then perform your deflection calculations based on the corrected positions.
If you want accurate results or need fast moving objects (good for billiards and similar high speed collisions), then you need to implement sweeping collision detection. Basically, instead of checking once per frame, you check X times per frame, depending on how much precision you want.