You don't reference "both 32 and 64 bit *mgd.dll"... .NET is independent of system architecture, and the same managed DLL works for both 32-bit and 64-bit.
In general, you can also compile your code to a single DLL that will work on both 32-bit and 64-bit. In practice, there are caveats to this, especially with apps like Civil 3D, where not everything is accessible from the managed DLLs.
I've used VS 2008 to compile DLLs for C3D 2012. I'm not sure if you can use VS2005 or not, but I don't know why you would want to. Given a choice, VS 2010 is probably the one to use. There are some caveats involved, especially with regard to target frameworks and debugging, but those issues have been covered here already.