I re-shared the images in that link. They are ways to approximate the collision point once the balls are overlapping.
You still need the point when the balls collide. The two ways are either to use a loop to move the one ball forward by steps till they collide, or you could raycast from the white ball to the red.
the loop way could be something like this:
every tick:
-- testBall: set position to whiteball
-- testball: set angle to whiteball.angleofmotion
repeat 1000 times
testball: isn't overlapping redball
-- testball: move forward 1 pixel
The ray cast method it more complex but more percise. Basically a ray from the whiteball against a circle at the redball's position with a radius of whiteball.radius+redball.radius. I couldn't find where I've done that before, but it's a formula you can find online.
Anyways after that you can calculate the bounce. This is pool so we could do perfectly elastic bounces. You really only need the normal (angle from one ball to another) and the velocity. The formula is pretty standard in physics. Here is a possible example, and a link to an article about it.
construct.net/en/forum/construct-2/general-discussion-17/approaching-pool-ball-movement-56649
construct.net/en/forum/construct-2/how-do-i-18/fake-physics-collision-123031
In the end though it may not precisely match the path the balls will move with the physics behavior due to differences in frame time causing the collision to be at slightly different times.