Есть нативные (Java/C#/swift/object-c) и гибридные приложения ([нативные библиотеки на нативных языках]+[Web-view: для отображения HTML/CSS контента]+[HTML5]).
Нативные - пишутся на Android Studio (под Android) и т.д. в зависимости от платформы.
Гибридные - по-разному.
1. Для простых сайтов и игр - проще делать на гибридном.
2. Системные и утилиты (или что-то сложное и низкоуровневое, требующее тесной интеграции и вычислений с интегрированными устройствами (работа с ОС и файлами)) - лучше делать нативно.
3. Для мобильных игр - лучше использовать компиляторы 3D-движков: например, тот же Unity и другие.
Для гибридной разработки, лучше делать на PhoneGap/Cordova.
Список того, что нужно для гибридной -
здесь.