2) You can definitely do this in D3D11, so I would assume that you would be able to it in OpenGL as well
Unfortunately you can't in OpenGL usually. It requires extensions that are only available with drivers for the work-station cards, such as NVidia Quadro. I've read that AMD drivers will be nice and use the correct card depending on which monitor your window is created on, if both cards use the same driver, but I haven't tested it.
If the cards are from different vendors it always uses the card which has the primary monitor. Standard WGL does not have functionality for it.
(Which is completely dumb as you can actually create one OpenGL context on one card, then go into the display settings dialog and change the primary monitor to be on the other card, and then create the next context, and both work side by side correctly using the different cards. I've tested that on Win7 for AMD + NVidia and it works well, it's just that the pixel formats and driver is always chosen from the primary monitor).