How, exactly, is D3D "better" than OGL? The language is obtuse (a COM interface versus a simple state machine), amongst other things.
It's not really obtuse, both APIs are functionally equivalent. The biggest difference between both is that D3D is object-oriented whereas OGL is just a C-style series of function calls(ie. the difference is direct3DDevice->Present() vs glSwap()).
Also, D3D does not have an immediate mode, which is why OGL "seems" easier when looking at simple programs(immediate mode allows passing a single vertex by a call to glVertex). However, immediate mode does not reasonably scale, because the overhead of function calls quickly becomes the bottleneck with larger geometries and so you have to move into using vertex arrays(called vertex buffers, in D3D-speak), thus making your program very similar to the D3D one.
As for which one is better, that's debatable. In the 90's, D3D was lagging behind with regards to newer functionality(there was a Carmack rant on how D3D didn't include some functionality and the OGL folks simply did an extension) but I believe the situation is reversed now. D3D does have the advantage of having PIX for free, which is a really nifty 3D debugging app(GarageGames wrote an article about it).