1) OpenGL if you want to use a cross platform. It is also associated with other cross-platform languages, such as Java, if you ever want to step back from C ++ for a given project.
EDIT: I also mentioned that often for a new designer / developers you will think that cross-platform is the holy grail. Is not. Your most important goal is to make the game SELL, period, on the platform (as defined in your marketing research). And if it really is for sale, do not worry, you can (or can find) the time and financial support for its port. Do not burn in your first project due to minor issues. If you remain very interested in cross-platform, consider C # .NET / Mono / Unity as possible options.
2) WARNING: Do not be blissful in creating assets for games on your own. I have always been a pretty artistic person, but I am a game developer and a developer in the first place. It is NOT easy to produce assets of any reasonable level of quality, completely eliminating all the technical problems associated with this. I heard from other very talented indie developers (coding and art critic) who were unable to implement projects because they spent too much time on artwork. They had to learn tools and techniques. This is a completely different profession, do not underestimate it. I highly recommend that you focus on development and find a partner for the art / asset side. If you want to do the concept yourself, that's fine.
3) Gamedev.net has been working for many, many years and is probably your best resource. I would adhere to this until you begin to understand things - HARD game programming, and Rome was not built in one day. There are various others such as forums.indiegamer.com if you are indie (or even if not). EDIT: GPWiki is another great resource.
4) There are thousands of good books. It very often depends on your language. The Black Art books for game programming are great, like all Programming Gems (Gems, GPU Graphics, you name it).
source share