DLL может сделать для меньшего рабочего набора времени выполнения, если приложение было написано таким образом, чтобы управлять переключением контекста между библиотеками DLL (например, для более крупных приложений можно разделить функциональность приложений на логические границы должны быть реализованы в автономных DLL и позволяют загрузчику загружаться во время выполнения).
Хотя верно, что библиотеки DLL в основном устанавливаются / копируются в ту же папку, что и файл .exe, необходимо придерживаться правил загрузки загрузчиков (которые включают системную папку (плохая идея), PATH, текущий каталог [см. LoadLibrary API Справочная документация для полного описания приоритета]).
Вы "добавили" комментарий относительно файлов LIB. В ОБА динамических и статических, вы связываете, используя файлы LIB. Но в случае динамической загрузки вы поставляете .exe вместе со всеми зависимыми DLL (файлы LIB содержат экспортированные точки входа для соответствующей DLL).
Я предпочитаю DLL, так как мои приложения имеют тенденцию быть большими и сегментированными, и это позволяет мне поставлять ТОЛЬКО эти обновленные компоненты (DLL). Мы даже отделяем бизнес-логику от представления в своих собственных DLL [позволяет локализовать dll только для ресурсов независимо от логики.
Программирование с использованием библиотек DLL заставляет вас придерживаться контракта экспортируемого класса / метода или функции.