Olá,
Acho que posso contribuir um pouquinho. Vou falar de uma forma bem objetiva e superficial sobre o assunto.
O moodle foi desenvolvido em PHP com CSS e foi elaborado para suportar 02 tipos de bancos, o mysql e o Postgree.
Os módulos se encontram em pastas com o nome dos mesmos, e as tabelas relacionadas a ele se encontram com o prefixo (Geralmente MDL_).
Exemplo: mdl_forum
Para alterar qualquer módulo somente é necessário abrir a pasta referente a ele e alterar o seu código. Porém, para se ter bons resultados, o ideal é criar um módulo próprio, pois os mesmos irão possuir suas particularidades.
Vale lembra-lo, que por possuir a licença GPL, qualquer modificação no AVA assim como os seus módulos, deverão ser documentados e distribuidos se solicitado.
O moodle funciona de uma forma muito simples e espero que o tenha ajudado. Infelizmente não da pra entrar na parte técnica sem se aprofundar e escrever muitas linhas, por isso não pude entrar mais na parte técnica. Mas, estou a disposição para maiores esclarecimentos e vou acompanhar esse fórum para ajudar sempre que puder.
Abraços e espero ter dado o ponta pé inicial para uma boa discussão.