Можно ли управлять всей программой с помощью скриптового языка?
Из lua можно вызывать код, написанный на C/C++. Соответственно, требуемый функционал оформляем в виде библиотеки, которую используем в скриптах.
Так же lua (как и другие скриптовые языки) можно встраивать в собственное приложение.
Оба варианта имеют место быть, вопрос лишь в том кто главный и кто рулит тут всем.
При использовании подхода из ответа shurshur главный - интерпретатор скриптового языка (и твое приложение, написанное на этом языке), а твоя С/С++ библиотека - один из модулей используемых скриптом.
При встраивании главное твое приложение, которое может вызывать скрипты для каких-то своих целей. Скрипты могут использовать объекты твоей программы, для которых ты разрешил это действие.
Выбор реализации во многом зависит от того, что хочется получить в итоге.