Ciò che mi serve è creare un applicazione partendo dalle mie conoscenze, che la scrivo una sola volta e me la compila almeno per Android e iOS.
Relativamente alle tue conoscenze, la questione e' questa:
HTML --> usato come linguaggio di markup dai framework basati su HTML5
PHP --> non e' usabile per sviluppare le app mobile, ovviamente lo si puo' usare per sviluppare eventuali backend che girano su dei server remoti
JS -> e' la spina dorsale di tutti i framework basati su HTML5 come React Native, Phonegap/Cordova, Ionic, Intel XDK, Sencha, ecc...
JSON --> e' usato ampiamente dalle app mobile, ma al loro interno, cioe' come strumento di scambio dati tra web services e l'app stessa. Ma e' del resto lo stesso uso che se ne fa sul web.
SQL --> anche questo e' molto usato per lo stoccaggio dei dati. Android supporta nativamente Sqlite, sotto iOS si usa sempre Sqlite, WP usa C# che a sua volta supporta il famoso LINQ ( che e' SQL like ) e ovviamente puoi usare Sqlite
I framework basati su HTML5, unitamente a Qt, Xamarin e una manciata di altri sono l'unica soluzione esistente per lo sviluppo di app multipiattaforma. I tool nativi di Android, iOS, ecc... non supportano il multipiattaforma.
Qui voglio capire meglio una cosa: perché su HTML5 non posso fare ciò che voglio, e come si fanno le applicazioni videogiochi (es. Pokemon Go).
Per due motivi:
1. prestazioni, perche' i framework basati su HTML5 producono invariabilmente app piu' lente rispetto a quelle native e/o realizzate tramite Qt/Xamarin. Ma la situazione e' cambiata radicalmente con l'arrivo di React Native et similia. Le prestazioni delle app native restano ovviamente maggiori, ma il gap si e' ridotto drasticamente.
2. i framework citati implementano un'API che s'interfaccia con l'API dei sistemi operativi supportati e questo puo' portare a non avere il supporto per tutte le funzionalita' disponibili. Per esempio non era raro ( non so se sia ancora cosi' ) non avere il supporto per la camera in Cordova. Chiaramente un framework come React Native, sviluppato, supportato ed usato da Facebook, puntera' ad avere il massimo supporto possibile. Ma puo' capitare che qualcosa manchi, specialmente le funzionalita' presenti nelle ultimissime versioni dei sistemi operativi mobile.
Pokem Go non so come sia stato realizzato, ma non mi meraviglierei se avessero usato Unity. Se guardi sul play store/app store, noterai che la stragrande maggioranza dei giochi 3D usano Unity.
Inoltre vorrei sapere come sono state create le applicazioni che usiamo maggiormente (es. Facebook e WhatsApp), dato che chiedono dati al server (penso in JSON) e comunque sono multipiattaforma.
Whatsapp e' di vecchia concezione, sviluppato in C++ per la parte cross-platform, con una UI sviluppata usando gli SDK nativi e Java su Android/Objc su iOS. Facebook invece e' stata implementata con React Native.
Comunque per farla breve, se t'interessa realizzare app generiche multipiattaforma, la scelta e' tra React Native, Qt e Xamarin. Per i giochi non ha senso non usare pacchetti "chiavi in mano" come Unity, Cocos-2d, ecc...
Per le tue conoscenze e' piu' facile cominciare con React Native. Unity supporta Javascript ( oltre a C# ) come linguaggio di scripting, per cui e' la scelta migliore sul fronte videogiochi.