¿Por qué la gente dice que para crear una aplicación tienes que aprender Java (Android) u Objective-C (iOs) y luego veo en StackShare que algunas de las aplicaciones más populares se escribieron en otros idiomas como Python (Instagram), Erlang (WhatsApp) ) ¿y así?

Está combinando tecnología de cliente y tecnologías de servidor.

cliente, es el dispositivo donde se ejecuta la aplicación. Podría ser un teléfono Android, un iPhone, una tableta, una PC, un navegador web, etc.

La parte del servidor, o el back-end, generalmente es donde se encuentran los datos, y en la mayoría de las modernas (aplicaciones conectadas) hablan mucho con el cliente.

Entonces, las tecnologías utilizadas en el cliente son Java, ObjectiveC / Swift o HTML, mientras que las tecnologías del lado del servidor son Python, Rails, etc.

la mayoría del lenguaje de programación se puede usar para hacer tanto el servidor como el cliente (c, c ++, javascript, …) pero el lenguaje de programación es solo una pequeña parte de la solución.

Entonces, Instagram, por ejemplo, probablemente esté usando Python en el servidor, y Objective C y Java en clientes iOS y Android