Not C++ if you want to produce managed code, which you need to for a library, unless you are a masochist (personal opinion only!).
If you have no existing allegiance to VB then I would recommend Visual C# Studio 2008 Express which you can download from the "Visual Studio 2008 Express" tab on this page here
Microsoft Express Downloads
1) I find C# terser and easier to read than VB.NET which I think has grown too verbose in being mapped onto .NET. As they use the same .NET libraries only the language syntax differs.
2) VB sticks extra stuff in the dlls that show up as unwanted objects in Tools -> AddObject. C# generally, but not always, produces "clean" dlls.
3) The C# library source code can be merged when an application is compiled so that the external dll is not necessary to run a compiled exe.
4) Not really a valid reason but Basic4ppc is written in C# and I use C# (must be good!
).