1) Why do you need to reinitialize rendering context other way than usual, application start? Notice that you will lose all loaded textures when doing so. If TGraphicalGame was freed properly, it will recreate them in constructor as should. For something like using multiple "rendering windows", this sort of behavior is not needed at least. OpenGL can quickly switch between rendering contexts. That's again going to territory i haven't tested, and implementation differs on Delphi and Lazarus.

2) You will be ok without the onPaint. In the constructor of TGraphicalGame, it might be calling CenterMouse() if you want to make for example FPS game, or space simulator like that picking demo. onFormCreate does not know much about window size and position yet, so it would give mouse a random "warp" effect at start... That's why TGraphicalGame should only be created once the window exists and is visible.
For example, if form1.Position is poScreenCenter, it is only made effective at onPaint the earliest. onFormCreate and even onShow still don't know the real values.