Как создается класс R
Генерируется автоматически утилитой
aapt (aapt2), которой передаются пути к ресурсам.
Сам класс R состоит исключительно из статических подклассов со статическими int константами, которые представляют собой id ресурсов.
Как обработчики определенные в MainActivity связываются с именами обработчиков в activity_main.xml? Явно это не прописано, просто указано имя обработчика в xml атрибуте объекта..
Непонятно, что за обработчики.
В самом начале вы вызываете метод setContentView(R.id.layout_id), который применяет лайаут к активити(то есть, создаёт все View на основе xml), а через метод findViewById(), как понятно из названия, ищите View по его id. Собственно, с этим View можно делать, что пожелаете.