The NDK is a toolset that allows you to implement parts of your app using native-code languages such as C and C++. For certain types of apps, this can be helpful so that you may reuse existing code libraries written in these languages and possibly increased performance.
Before downloading the NDK, you should understand that the NDK will not benefit most apps. As a developer, you need to balance its benefits against its drawbacks. Notably, using native code on Android generally does not result in a noticable performance improvement, but it always increases your app complexity. In general, you should only use the NDK if it is essential to your app—never because you simply prefer to program in C/C++.
It is however completely your choice, and if you really prefer C++ you should go with your own preference. I wanted to stress my recommendation of Java rather than C++, but it's your choice and I won't continue to push the point if you've really considered your option and still want to use C++.
Not necessarily. An engine can be helpful for developing more complex games without having to do all the work for yourself, but often for simpler games or if your needs are particularly unusual it can be beneficial to simply write your game using the functionality in the SDK or a simple lower-level framework.
But after that i need use a game engine, right?
If you'd like an engine or framework for targeting Android from Java you might consider LibGDX or Angle. There's also an Android version of Slick in the works that would likely be a good option -- it might be worth looking at after you've spent some time learning on PC first.
If you'd rather C++ and would like a framework you might look at Allegro or SDL, both of which can also be used on PC whilst you learn beforehand.
Any graphics software package. You might look at InkScape for vector art, or GraphicsGale, GIMP, Paint.NET or PhotoShop for pixel art. This is really a huge topic of it's own though, and I'd suggest checking out our Visual Arts forum and asking any art questions you have there.
What people use for creating 2D sprites?
I hope that's helpful! Do what you prefer, but consider your options. Good luck!
: Corrected a typo.