¿Cómo empezar a crear software desde cero? ¿Qué lenguaje debo utilizar? Si quiero que el programa se pueda integrar con otros, ¿qué debo tener en cuenta? Dónde puedo aprender todo lo básico

Depende de lo grande que sea tu idea. Si quieres desarrollar un buen software con el mínimo riesgo de fracaso y un software que pueda aceptar cambios en el futuro, lo primero que debes considerar es utilizar un modelo de software adecuado. Para utilizar un modelo de software, primero debe conocer las diferentes fases del ciclo de vida de desarrollo de software
Aquí hay un enlace que puede ayudarle a comenzar con el SDLC
https://en.m.wikipedia.org/wiki/Systems_development_life_cycle

Aquí hay un enlace para los modelos de proceso de software
https://en.m.wikipedia.org/wiki/Software_development_process

Agile es el modelo de proceso de software más utilizado en la industria, pero para los pequeños proyectos individuales debe ir con el modelo de cascada.
La única ventaja de utilizar el SDLC es que también puede dividir el trabajo entre los individuos si su proyecto es grande.
La primera fase del SDLC es la fase de recopilación de requisitos, en la que debe escribir requisitos muy detallados de su idea desde la perspectiva del usuario. Esta fase es la más importante de todas porque si no se obtienen los requisitos correctos, no importa lo bueno que sea el software que se construya. Para modelar los requisitos puedes escribir y dibujar casos de uso de tus requisitos. Aquí hay un enlace para empezar con los casos de uso, pero siempre se puede encontrar más material en línea sobre los casos de uso y la recopilación de requisitos.
https://en.m.wikipedia.org/wiki/Use_case

Después de la recopilación de requisitos viene la fase de diseño donde se modela el software desde la perspectiva del codificador que va a codificar su sistema. UML realmente ayuda en el diseño de software aquí hay un enlace para eso
http://www.uml.org

https://en.m.wikipedia.org/wiki/Unified_Modeling_Language
Puedes buscar en qué orden usas cada diagrama. Se aclarará a medida que avanzas en este proceso y puedes aprender más sobre UML ya que hay mucho material en línea.

Después de diseñar empiezas a codificar usando tu diseño. Usted verá que la codificación se convertirá en fácil en cierta medida si usted va a través de este proceso.

Después de escribir el código de su sistema, usted probará su código contra los casos de prueba para los errores, esta fase será su fase de prueba.

Y por último, pero no menos importante, usted mantendrá su software.

Si usted quiere saber más sobre el proceso de ingeniería de software puede buscar en algunos libros. Un libro que me gusta como referencia es software engineering de sommerville y Agile software development with scrum de ken schwaber.

Estos fueron los breves pasos para hacer un buen software trazable, mantenible y fácil de depurar.

Para la selección de lenguajes de programación todo depende del tipo de proyecto que estés haciendo. Por ejemplo, si usted quiere hacer una aplicación en línea segura con todo el control en sus manos y no le importa la complejidad, entonces usted debe ir con JSP con HTML. Si quieres hacer un sistema relativamente rápido entonces php o ruby debería ser tu elección. Si eres nuevo en la programación entonces te recomiendo que primero tomes algún curso en línea de introducción a la programación en tu lenguaje preferido. Python es fácil de agarrar pero todos los lenguajes son más o menos lo mismo si aprendes uno con éxito entonces el aprendizaje de otros sería fácil.