Was du definitiv brauchst ist das Grundwissen wie man mit einer Hochsprache umgeht.
Es gibt ein paar Grundelemente, die in allen Programmiersprachen gleich sind. Beherrscht du diese, kannst du fast alle Programmiersprachen lesen/schreiben.
Hier kannst du das wichtigste Grundwissen für die Programmierung erlernen: http://lerneprogrammieren.de/einstieg-start/
Dort gibt es einen kostenlosen Videokurs der auf deutsch ist und diese Elemente erklärt.
Für die Apps:
Hauptsächlich programmiert man Apps für Android mit der Programmiersprache Java. Tatsächlich kann man aber auch noch andere Sprachen benutzen, z.B. mit C++ (Android NDK, o.ä.). Zudem gibt es noch Plattformen die es mit der Webtechnologie erlauben über Javascript App für alle Mobile Plattformen zu schreiben (jQuery Mobile, PhoneGap). Welche du davon wählst hängt davon ab, was du für eine App schreiben willst.
Dauer:
Zum einen hängt die Dauer von deinem Fleiß ab, in dem oben genannten Kurs gibt es viele Übungen, die notwendig sind um die Grundlagen zu verstehen. Lässt du diese aus, wird es länger dauern. Zum zweiten hängt die Dauer von der bisherigen Erfahrung ab und ob du lieber mir Büchern, Videos o.ä. lieber lernst. Zum dritten hängt die Dauer davon ab welches Material du benutzt, also ob die Grundlagen gut erklärt sind oder nicht.
Wenn du gut bist kannst du es schaffen deine erste kleine App innerhalb einer Woche zu schreiben, um ein professioneller Software Entwickler zu werden braucht man allerdings jahrelange Übung.