mathematics – What is closing and separating velocity in Ian Millington’s game physics book?

I’m working on a physics engine in c++ and chose Ian Millington’s Physics Engine Development book as a guide and reference to help me out understand physics concepts and how to implement them.

Yesterday I was reading through the Hard constraints chapter particularly the simple collision resolution section and came across an explanation of a physics formula that I couldn’t fully comprehend. Millington says The closing velocity is the total speed at which two objects are moving together and it is calculated with the following formula:

Vc=dot{Pa}.(hat{Pb-Pa})+dot{Pb}.(hat{Pa-Pb})

Where Vc is the closing velocity, Pa and Pb are object a and b respectively. Also he further discusses another formula called the separating velocity which is written as follows:

Vs=(dot{Pa}-dot{Pb}).(hat{Pa-Pb})

Where Vs is the separating velocity. Now I don’t really understand what these formulas actually are or what they represent in the physics world. I also have trouble wrapping my head around why we need these formulas to perform collision resolution since he used the separating velocity formula to resolve the velocity upon collision and why we need the dot product. It would be really helpful if someone can provide visual explanation that would significantly help me understand what’s going on.