1. What are some good API's to use to make 2D games?
2. What makes a game successful?
3. How much money do developers make from their apps?
4. Is it better to make a game free and put ads in it or is "freemium" better (or just straight upfront payment)?
5. What are good ways to advertise apps and gain recognition?
1.SDL/OpenGL, SFML, Allegro.
2.Successful to you, or successful to who? Usually, a successful game is one that exhibits good gameplay, good user-interaction, good plot, gameplay antics, controls, and many other things I couldn't even start to think of.
3.Depends on what app they make, and how far it goes. You probably would make nothing near enough to live entirely on from app development itself, but that's just an average, and you can always be an exception.
4.That's up to you to decide.
5.Start a blog, post comments on YouTube, start some advertising campaign online (like on YouTube), upload videos of your games, get fans, do paid advertising on billboards, etc. You can do remotely anything that's feasible to advertise any way you want, pretty much.
By the way, to add, if you've been using C++ for years, Java will come very easy. Just keep reading up on it. I got the basics of Java down in less than a few days - classes, methods, data types, inheritance, polymorphism, etc. - all with prior working in C++.