Je ne suis pas expert en apps mobiles, mais je vais essayer d'apporter qq reponses ; d'autres viendront surement completer ou infirmer certains propos :
1. Il n'y a pas vraiment de solution simple qui marche bien et "facilement" pour targeter a la fois iOS et Android. Ce qui marche le mieux (= pas trop mal sans erte parfait) a l'heure actuelle, c'est de faire du HTML5 et utiliser des wrappers/frameworks pour les differentes plateformes (NW.js / Electron, Cordova / PhoneGap, etc.). Ca permet de faire du web "natif" et des apps. Le soucis vient des compatibilites et performances entre wrappers et plateformes, qui peut poser des soucis
Sinon on part dans des framework/langages specifiques a chaque OS : java / C++, Objective-C, etc.
2. Il y a des outils assez visuels permettant d'exporter sur differentes plateformes, tels que Unity, Construct2, etc. Ca permet de se focaliser sur le contenu, mais tu es dependant de l'outils en termes de fonctionalites, pipeline d'export, etc.
Si tu veux programmer pour Android, tu peux faire du HTML5 (= javascript, typescript, ES6, etc.), du Java, ou du C++ avec le SDK natif. Plus tu te places bas-niveau, plus tu vas galerer a supporter les differentes plateformes, car il existe une multitudes de mobiles/tablets "Android" ; plus tu te places haut-niveau, plus tu vas galerer a gerer les ressources et performances. Il y a un equilibre a trouver...
3. Ca depend du type de jeu. Si les performances sont importantes (= controles temps reel, au lieu de tour-par-tout par ex.) c'est une contrainte extrement forte qu'il faut integrer des le debut.
La ou c'est particulierement delicat, c'est de faire un jeu haute-performance multi-plateforme. Souvent c'est different moteurs natifs qui tournent en dessous.
En gros si tu veux faire iOS / Android, il faut prendre des technos haut-niveau ou outils qui gerent ca pour toi ; si tu limites les plateformes (parmi windows, linux, osx, web, android, ios) tu peux prendre des technos specifiques plus efficaces