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. For simple 2D, the best API is simply to use the built-in Java stuff. Unless you are familiar with OpenGL, or you require 3D/physics, using anything more advanced is generally not worth it.
2. As frob says. No one can says what is a success, other than yourself.
3. As frob says. Graphics and music are expensive if you want quality, so it can be very hard for games to even just break even.
4. It depends on the game. Though I'll say that there are two things I'd always recommend; firstly, to always have a way for the player to try the game (whether this is with a free/lite version combined with a paid version or freemium), and secondly, to be careful of the race to bottom pricing. Once you're at 99c, you have nowhere left to go but free - and you need a lot of sales at 99c to make any sort of money - sales that you are not likely to see.
5. Make a good app that brings something new to the market. No realistic (for an indie) amount of marketing for the The 100th scrabble game (Wordfeud), physics puzzler, or tower defense game is ever going to make any difference to the popularity of that app. As for recognition - forget about that. Set your own - small - goals for each app and try to achieve those.
Also - if you know C++, quit waiting and start coding. I jumped straight from C++ to Java a few years back, and - apart from having to learn which classes existed (something the Android Developer docs cover very well) - it took only a forthnight or two before I had a working demo of my first app. Learn by doing.