I’ve played a small amount with it— I didn’t go far because I only have one graphics card. But my understanding is that you can set up the virtual machine to “capture” the graphics card when it is booted up, and “release” it when it’s done. That’s how some people can use a single graphics card, they just can’t see the Linux desktop while the vm is in use.
For switching games, make sure the drive the game is on is supported by both Windows and Linux. I imagine you’d need to unmount it on the host while the vm is open. I do this for some games with dual booting. Also, install the Windows version and force proton, otherwise you’ll have to install it twice.
For microphone, I assume there’s a solution like network: a way of forwarding the data to the VM in addition to being available on the host. I haven’t tinkered with this though.
For monitors, I’d look into Looking Glass. My understanding is that it can make a window to display the vm output. If you don’t mind the monitor being “tethered” to the gpu, though, I’d imagine any monitors attached on the gpu you pass would display the vm’s contents, while any on the host card will remain the same.
Best of luck!
If you’re feeling adventurous, you could compile Marlin yourself. I did it to use a pin as an “off” signal for my fans, but ended up tinkering with options like linear advance. The set up isn’t too hard, but you need vscode.