Muchas preguntas tio!!
Xamarin no es un lenguaje. Es un conjunto de herramientas para desarrollar aplicaciones nativas. La base fundamental es el binding 100% a las sdks de cada sistema (ios/android). Es decir, mediante C# tienes acceso a las APIS de Android y IOS. A los mismos componentes, a la misma manera de hacer las cosas. Pero con C# y toda su gloria :)
Un "UIView" de ios es un UIView en xamarin. Un LinearLayout de java, es un LinearLayout en xamarin.
Este tema da para mucho, pero en resumen. Estás desarrollando una herramienta nativa con un binding de un framework nativo y con performance nativa. Una app Xamarin es más rápida que ObjC en iOS y que Android en java, quedando un poco por debajo de swift, pero muy poco.
No utiliza js ni html, a no ser que hagas una app híbrida. Como te decía, utiliza las APIS nativas de cada plataforma.
Los componentes se hacen igual que como los harías en iOS y en Android por separado.
La ventaja es que puedes compartir muchísimo código (la lógica) y desarrollar solo el UI para cada plataforma.
Además de todo esto, hay un framework que se llama Xamarin.Forms que te permite escribir código UI multiplataforma. Vamos, lo más parecido a Flex para ponerte un ejemplo. Puedes codificar con C# (como si fuera actionscript) y XAML como lenguaje declarativo (como si fuera MXML).
Saludos