Tu as un choix a faire :
- utiliser des technos cross-platform ; ca te permet de ne developper l'appli qu'une fois et la deployer partout MAIS ca se fait au detriment des performances et parfois de certaines fonctionnalites
- utiliser des technos propres a chaque plateforme ; tu maximises les performances et a acces a toutes les fonctionnalites MAIS tu dois re-developper l'appli pour chaque support
A l'heure actuelle il n'existe pas vraiment de solution facile proposant des bonnes performances cross-plateforme.
Si ton appli n'a pas besoin de temps reel (comme un jeu d'action par exemple) tu peux prendre la premiere solution
1. Si tu veux du crossplatform, tu peux regarder du cote de html5 en javascript ou typescript. Ca te donne aussi Windows et MacOS. Regarde aussi les outils avec des exporters comme Unity, etc. Pour du natif, avec Android ce sera java, iOS ce sera ojective-C ou Swift (ou C# via xamarin)
2. Oui mais pour le deployment, les licenses et la publication, il te faudra obligatoirement un Mac.
3. Non, a moins d'utiliser des technos crossplatform de base ; cf explications plus haut