primero veamos que es un smartphone
http://es.wikipedia.org/wiki/Tel%C3%A9fono_inteligente
ok listo, vemos que los sistemas operativos más famosos son
Android 72,4 %
iOS 13,9 %
BlackBerry OS 5,3 %
Symbian OS 2,6 %
Windows Phone 2,4 %
Bada 3,0 %
por lo que trabajando sobre android e iOS tenemos aprox 86.3% por lo que lo ideal es aprender a programar android e iOS, android esta basado en JAVA por lo que hay que saber JAVA, pero existen herramientas para usar por ejemplo C# para programar aplicaciones android.
luego hay otras herramientas que nos ayudan a transportar nuestras apps a otros SO como blackberry, symbian y windows phone.