Разве что для модульности полезно - когда в программе десятки-сотни независимых друг от друга модулей и подгружать их нужно по необходимости. Кстати, и обновлять и расширять программу тогда можно отдельными модулями, а не целой программой.
Насчет прогресса - поддерживаю: VCL-компонент. Один раз пишешь, в разных программах используешь.
Если это отдельная форма, то для создания множества форм по одному классу убери в настройках проекта ее из автоматического создания и создавай нужное количество, когда и где тебе надо:
Простейший пример:
TMyForm *frm = new TMyForm(this); // Предполагаю, что создается из другой формы - потому ее объявляю владельцем через this.
frm->ShowModal();
delete frm;
Если форма в обработчике Close выполнит
Action = caFree;
то delete не потребуется - объект формы самоуничтожится (и освободит память) после выхода из нее.
Так же легко создаются MDI формы - только их не нужно уничтожать извне - только изнутри.