Первый затык - регистроваться на сайте нужно заранее - можно ли сделать так, что бы форма регистрации вываливалась после выбора курса при самозаписи?
Можно. Только не средствами одной Moodle. Нужно сделать «симбиоз» двух систем, например, Joomla (или Drupal) и Moodle.
В первой системе создаете магазин с каталогом курсов, регистрируете пользователей, подключаете платежные системы. В Moodle делаете всё остальное: курсы, тесты и т. п.
Пользователь идет в ваш магазин Joomla, выбирает курс, оплачивает (с одновременной регистрацией), получает доступ к курсу в Moodle. Учетка одна и та же для обоих сайтов (Joomla и Moodle). Есть плагин Authentication: Joomdle
Moodle можно встроить как фрейм в другую платформу, есть такая настройка, переход будет незаметен вовсе, особенно, если подогнать темы оформления под один стиль. Есть тема Joomdle Bootstrap
Самозапись тоже настраивается по входу пользователя в курс. Есть плагины Auto enrolment и AutoEnrol (не помню, какой лучше )
ЗЫ: видел (и админил Moodle) готовые работающие решения.