Necesito Xcode para codificar para iOS y OS X?

Esa es la regla general. Usted no tiene absolutamente que usar XCode para OS X. Hay plataformas de desarrollo alternativas para ello, y como plataforma, el SO es muy flexible al respecto. La razón de esto es el método de entrega permitido. Puedes instalar software para OS X desde cualquier lugar. El sistema operativo, por regla general, no permite que el software no certificado/no fiable se ejecute en él, pero hay una manera de anular eso, si lo desea.

iOS es más restrictivo. Sólo se puede descargar software para él desde la App Store de Apple, y Apple tiene condiciones estrictas para lo que permite en la App Store, que se describen en el acuerdo de licencia de desarrollador de Apple. Tienen una lista de lenguajes aprobados que puedes usar, y todos son compatibles con XCode, aunque no estipulan que debas usar XCode para desarrollar para iOS.

Lo que yo entiendo sobre la licencia de desarrollador actual de Apple es que te permite usar lenguajes fuera de la lista aprobada para iOS, pero que el tiempo de ejecución para esos lenguajes debe estar escrito en uno o más de los lenguajes aprobados, y que debe adherirse a ciertos comportamientos. Un ejemplo es que si escribes una aplicación en un lenguaje alternativo, tanto el tiempo de ejecución como la aplicación que has escrito en el lenguaje alternativo deben estar empaquetados juntos en un único paquete de aplicación. Tu app. no puede descargar o cargar ningún código alternativo. Incluso puedes programar en el lenguaje alternativo en la plataforma iOS, pero la plataforma del lenguaje no puede permitirte compartir el código con nadie. La gente ha encontrado maneras de evitar esto, pero implica pasar por algunos aros que no implican poner una «puerta trasera» en la plataforma de lenguaje. No estoy seguro de los detalles.