It's very hard for us to find out what books you need. You say you know some basics, and that you want to make some game. Still, we don't know what you really known and what genre of game you want to make (or do you want to make an engine, or both?)
I suggest you check out the books section. If you find a book you think is interesting, you can usually check it out the first 20 pages or so, reviews and it's probably the cheapest on Amazon.
However, I've tried to find a good substitute for VS (as C/C++ support isn't that good) I've tried eclipse, netbeans and code::blocks but I've gone back to VS. No matter how much you hate it, I still find it the best IDE out there. Sometimes a tweak or plugin can help you. I found some plugins that improve the intellisense.
PS: where did you find the rumours about visual studio express 2011 is going to be metro only? I think that the express edition is and probably will stay free and keep the functionality that the current versions have. In the worst case you can just keep using your VS10.
This is a pretty 'beginners' error? Perhaps you should check out some more C++ books/tutorials to prevent you from making mistakes like this again. (The more you known from the language, the more optimized and clean your code will be. I speak out of experience )
You should find a way to store your data in a way that you can read it, without having to recompile. This means that you should have some files (XML, INI, TXT...) or database that contains the items. Why?
Because updating and adding Items is nothing to worry about then: you can then send updates by sending a new XML/INI/TXT.. file instead of having to send a whole new build to your clients. You could also serialize your classes. This means that you create your classes once, and them saves them to disk to be loaded later. (tutorial) The advantage of this is that your code is harder to manipulate (as people can 'cheat' by editing your XML/INI's) but you have to do more work when creating your serialized objects.
You should always program to an interface and not to an implementation. What's the difference? With an interface (look at my UML schema) you can reuse your code. You can then just give new models & new 'item'-files to your clients and you have a whole new game - without touching your source code. You could even do this for your GUI! (For example the source engine does this (known from counter-strike:source, gmod, half-life2, team fortress, portal...). They have created a way to parse '.res' files (see attachement, ChatScheme.txt - this file is from a new GUI for Counter-Strike:Source). By editing nothing else then these files, they have created a whole new GUI)
So your Java RPG engine should be capable of parsing files like this. Of course, a 'basic'(hardcoded) system (like the_neverending_loop suggested) is fine, and then you can expand it to be able to 'parse' the GUI. The more you keep your engine separated from your game, the more you can reuse it in future projects.