Если взять компиляцию и сборку исполняемого файла, например .exe, то обычно ты используешь вызовы различных библиотек.
Системные библиотеки обычно доступны в системе, поэтому можно собрать файл динамически, где в самом файле будут ссылки на системные библиотеки, и файл будет не слишком большой. Но есть вероятность что на другой версии операционки какой-то библиотеки может не быть, или она будет более старой/новой версии, что может привести к несовместимости.
Статическая сборка - библиотеки целиком или частично будет также добавлены в исполняемый файл. Файл будет большой, зато выше вероятность что он заработает на других версиях системы.
Аналогичные вещи есть и в ассембли.