Hey, did you make any progress on this yet?
It's a bit odd that it would work on Windows 7 but not Windows 8.
- Install the DirectX SDK on the Windows machine and switch to Debug in the DirectX control panel - check for error/warning messages in the debugger output
- Check the return value from all DirectX API calls (create a "verify" macro to wrap all calls in, see #define V in DXUT.h)
- Make sure the video card in the Windows 8 machine actually supports the features you're using - many of the vertex formats are not widely supported
Regarding OpenGL vs DirectX... it seems to come down to personal preference. OpenGL might be preferable if you're targeting another platform that uses it.
For DirectX 9 vs 10/11 - unless you really want to support something DX9 can't do, I'd stick with it. As far as I know, there are a lot of Windows XP machines out there still that can't run DX10 or DX11.