Ich selbst habe noch keine richtige App programmiert und versuche gerade selbst den Einstieg zu finden.
Doch ein paar Dinge kann ich schon beantworten
Ich selbst benutzte Android Studio und Eclipse (zweiteres ist mir persönlich Umgangsfreundlicher). Bei beidem jedoch die Android SDK/ADT und das Java-Pack. Das ganze programmiert man dann (leider) in Java. (ich weiß nicht, ob es an der Programmiersprache liegt oder an mir, aber ich persönlich blicke für den Anfang gar nicht durch)
Es gibt auch die Möglichkeit, die Apps mit C++ zu programmieren, jedoch verzichtet man dann auf einige Funktionen, die bei Java (SDK) enthalten sind. C++ sollte man anscheinend nur für Spiele oder schnelle Anwendungen benutzen.
Du brauchst für das Austesten/Compilieren/... kein Android-Gerät, wenn du einen zur Software passenden Emulator installierst.
Jedoch testet es sich auf einem Gerät besser ;D
EDIT:
Jedoch, wie schon erwähnt, hab ich auch nicht die große Ahnung :/
Es wäre super, wenn noch jemand dazu etwas sagen könnte, da das Thema doch recht interessant ist.