Поздравляю с дебютом!

1) По поводу ARRAY OF CHAR - так в КП с ним можно делать все то же самое, что и со string в Паскале - сравнивать, складывать, умножать, присваивать. Только не забывать про оператор $.

2) Вообще говоря, для демонстрации инкапсуляции нужно именно несколько модулей. Потому что сокрытие полей происходит от кого? - от других модулей. Процедуры внутри одного модуля могут менять поля всех типов этого модуля.

3) Не инициализируются только локальные переменные процедур. Обнуляются только указатели - это необходимо для безопасности.
Инициализировать локальные переменные нужно в начале тела процедуры. А такие переменные, как счетчик FOR и т.п., инициализировать, ясное дело, не нужно вообще.
Те переменные, которые переиспользуются по нескольку раз (например, в каждом витке цикла), надо инициализировать на каждом витке цикла - и т.п.

Глобальные переменные модулей зануляются. Инициализировать их какими-то другими значениями можно из секции BEGIN модуля, которая выполняется при загрузке модуля в память.