All 3 of the main D compilers (dmd, gdc, ldc) use the same front-end, but dmd is generally a bit ahead of the others as it's the reference compiler. Also, I believe that there are a few cases where the other 2 don't implement some features yet (primarily on Windows or OS X IIRC), though in general, they work just fine. The primary advantage to gdc or ldc is that they generate faster code (though how much faster depends on the code). However, they also take much longer to compile code.
So, if you're just starting out, I'd suggest that you just use dmd and not worry about it. It's guaranteed to be the most up-to-date compiler, and I believe that it's what most people use. The primary downside to it is that the code that it generates isn't quite as fast, but you can look into the other compilers later if/when you really care about that.
For production code, the approach that I would generally take would be to develop using dmd and then generate the production code with either gdc or ldc. That way, you get the fast compilation times when developing code but still get the faster binaries in production.