I read some articles that says
As objects intersecting each other isn't physically possible, we have to maintain the realism of the simulation by resolving those collisions by separating them out so that they aren't overlapping.
And to do that, we need to find the separation distance to move it out along the collision normal.
But my concern is that once it is separated, it actually move away from the direction of the original incident ray and therefore a new reflected ray. As explained in below graph
This means a wrong reflected ray for me. Am I doing it correctly or that's simply something that's expected and we have to live with?
The text is describing the minimum distance to separate the objects, which is independent of the incident ray/object direction. If you were to try to displace the object back along its incident ray, then there are a couple of problems:
Regarding your question "This means a wrong reflected ray for me" - technically that's true, but in practice the displacement correction is usually relatively small. As noted above the method in the text is calculating the smallest possible displacement.