Для изучения и погружения в мобильную разработку в целом, на мой взгляд, сначала лучше пробовать нативные языки и инструменты. У каждой платформы разработан свой lifecycle для приложения, свои дизайн-гайдлайны и принципы, свои паттерны, и они, в общем случае, даже близко друг к другу не стоят. Я уже молчу о различии в языках на этих платформах (Obj-C в iOS против псевдо-Java в андроиде). Если есть желание стать дико прошареным во всем и сразу - в любом случае придется изучать официальную документацию по платформам.
Что касается кроссплатформенности. За PhoneGap и остальные html фреймворки - не знаю, не пробовал. Xamarin же используют в основном в разработке корпоративных приложений, для того, чтобы избежать дублирования слишком сложной бизнес-логики на разных языках в приложениях на разных платформах. Ну и для ускорения и удешевления разработки, соответственно. Это безусловно интересный инструмент, но чтобы его правильно использовать, опять же, нужно понимание платформ и их особенностей, т.к. write once - run everywere и здесь не получится, есть свои особенности, как раз за счет концептуального различия платформ. Xamarin старается их максимально сгладить, но в этом месте начинаются просадки в производительности.
В общем, тема обширная и холиварная, но мой основной поинт - начинать с нативного.