Kernel - это то, что называют рантаймом, или "поддержкой времени выполнения" для языка программирования. И такая поддержка есть у любого современного языка. Не все конструкции языка транслируются прямо в машинный код, часто используется обращение к такой стандартной библиотеке.

В частности, в Компонентном Паскале оператор NEW создает динамический объект - на самом деле происходит обращение к процедуре Kernel.NewRec. Неиспользуемые объекты подбирает сборщик мусора, он тоже содержится в ядре. Вы видите окошки трепов - среда должна уметь обрабатывать сбои в коде модулей. Это тоже делает ядро, правда, само окошко дампа показывают верхние отладочные модули (DevDebug, или, если Dev не включен в поставку приложения, то упрощенный StdDebug).
Далее, мы наслаждаемся динамической загрузкой модулей и другими гибкими средствами, которые объединены под названием "метапрограммирование" (когда можно докопаться до переменной по её символьному имени и т.п.) - для этого тоже нужна соответствующая поддержка. И ее тоже дает ядро - поглядите его интерфейс хоть поверхностно, это любопытно: вы увидите структуры Module, Type и т.д. (А если захотите копнуть поглубже, то я писал документацию на ядро, она есть в пакете Active BlackBox в дистрибутивах.)
Модуль StdLoader нужен для загрузки модулей в память из файлов. Если всё слинковано статически, то его можно и не включать. Далее, если используете какие-то негуёвые библиотеки типа Strings, Math и т.п. то их можно включать напрямую, не таща за собой весь Framework. Files, Stores - для выгрузки/загрузки данных - это тоже напрямую. А такие вещи, как Text, Form и т.п. - всё это уже тащит в той или иной степени приличную часть Framework'а.
Про порядок загрузки среды можете прочитать в документации, в главе "Платформенно-зависимые особенности".