Para criar uma categoria de curso no Moodle, via API é muito simples.
Segue o código:
require_once("$CFG->dirroot/course/externallib.php");
$categorydto=array('name'=>'Nome da categoria','parent'=>1,'idnumber'=>'Codigo da categoria');
$result = core_course_external::create_categories($categorydto);
Esse código gera a categoria no sistema Moodle.
Geralmente quando se trata de criar curso e categoria de curso eu evito usar SQL. Isso porque o API cria o curso e atualiza o cache. Se usar SQL, não aparece automaticamente no sistema após ser cadastrado uma vez que SQL não tem acesso a sistema de cache atualizar, e tornar automaticamente visível na interface do Moodle.