OpenGL over the network (remote GLX) only works good for a small number of applications: those that are sending (datawise) small commands to the graphics card, and then letting it do all hard work, transforming these commands into many pixels. But most OpenGL apps nowadays doesn't work that they: they need to transfer large amounts of data to the graphics card. If it is remote, the data needs to transferred over the network, and things will be slow. So for remote 3D solutions, it's really much better to have the graphics card in the server; in the same machine that executes the applications. This is exactly what VirtualGL is about.
If you want to use VirtualGL with VNC, however, you'll need an accelerated implementation (TurboVNC/TigerVNC/Sun Shared Visualization/ThinLinc) to get good performance.