NV_gpu_affinity is only supported on Quadro-class cards, not on consumer cards (GeForce).
In order to get full OpenGL ‘automatic’ (withouth GPU affinity) acceleration across multiple graphics cards on Windows, they all must be identical, or at least of the same chip generation. This is because the driver MUST expect the window to be moved across monitors of different GPUs at any point in time. This also means, it has to clone every state change and every resource (textures/shaders/VBOs etc) to all GPUs, which can be very slow if you do things like render-to-texture and the like.
On ATI the story is a bit different, though. There’s AMD_gpu_association. It is present on professional AND consumer level cards! The extension is designed to cope with GPUs that are not identical (different chip, different amount of VRAM). Personally, I have used it with a pair of two ATI cards (a V8750 and a V5700 together) and it worked
I’m a bit in doubt about WGL extensions, though. There are no means to ask about the WGL extensions of a specific GPU. So the best you can get is the WGL extensions of the primary GPU in the system… but this doesn’t tell you anything about the WGL extensions of the other GPUs.
With AMD_gpu_association, this seems to be no problem, because an “associated context” (as they call it) has no relation to the window system, anyway.
With NV_gpu_affinity you can use the “affinity DC” for wglGetExtensionStringARB() and thereby might get a GPU specific WGL extension string. I could not test this yet, because I only have tried a setup with two equal Quadro cards.