a) Could separate contexts potentially be faster in future, if they were used to render in parallel?
Rendering in parallel requires you to use more than one rendercontext; one for each thread. You are not allowed to bind the same rendercontext in several threads at the same time. Also, I doubt that talking to one GPU via multiple threads at the same time is beneficial for performance.
b) Would you need to modify more state if you’re using 1 context + viewing the same scene with different viewing locations/lights etc.
I don’t think so. It will be harder to maintain state between several rendercontexts. Viewing the scene with different light settings will require you to change the lights once per view. CHanging a state once per view will hardly impact performance.
c) Is Direct3D closer to the 1 context for several windows model?
In Direct3D the “D3D10Device” object is what comes closest to a rendercontext in OpenGL terms. In the D3D world it seems unusual to have more than one device running at the same time… except maybe if you need to talk to multiple GPUs.
d) Approximately how much memory is used per context?
Apart from the amount of resources you use (textures, VBOs, FBOs, shader etc…) this should be negligible. But keep in mind, that the driver has to manage/synchronize all rendercontexts behind the curtains, so there probably is some extra amount of work to be done on the driver side, whe using multiple contexts.