With cocos2dx you have a game engine made with C++. Each platform uses some platform specific classes, but that’s transparent to you. In your project, you have a “CLASSES” folder, that should be platform independent. In some projects you need to create platform specific code (to use native sdk’s like facebook, flurry, IAP, etc), then you have to organize your project well to be as much platform independent as possible.
But if you make a basic game without platform specific code, it’s directly cross platform, and will run on any Cocos2dx supported platforms.
Depending on what platforms you want to focus on, you can develop under windows, mac or linux. For iOS / Android I recomend you need to work using a Mac computer.
Good luck and welcome to cocos2dx