What is the difference between OpenGL and Direct3D? Are they truly different implementations to accomplish the same things (like Java and Mirosoft's CLR [.NET])?
They are very different graphics API's. But it's fair to say they mostly accomplish the same thing. DirectX is probably the API of choice if you are developing a game under windows (or a game for XBOX), and OpenGL is the choice if you want cross-platform support. Mac OS uses GL, as does the iPhone, for example, and many windows games also support OpenGL.
Because OpenGL was developed over a long time and 'by committee', it comes with a lot of baggage - the API has some older options that aren't really relevant today. That's one of the reasons for OpenGL ES; it cuts out all the junk and makes for an easier target platform.
DirectX on the other hand is controlled by Microsoft, and as such it has a more 'modern' feel to it (it's based on COM components, so is highly object oriented). MS often update the API to match new hardware.
Sometimes you don't have the luxury of choice (iphone for example can't run DX). But often it just comes down to personal preference/experience. If your a long-time graphics programmer, you tend to get pretty familiar with both...
Update:
Since I wrote this the landscape has changed a lot. These days on Mac you are encouraged to use Metal, although there is the option to use Vulkan and the 'Molten' compatibility layer.
We also have Vulkan and DX12. These are 'to the metal' APIs which are hugely complicated to learn but give you complete control. Personally, I'd still recommend learning OpenGL first, then move onto DX12/Vulkan/Molten if you need the control or have no choice. The best current 'cross platform' solution is Vulkan.