Динамические бибилиотеки это обычно те, которые уже есть в системе, и они могут быть расшарены между разными процессами.
Плюс: жрут меньше оперативки, так как библиотека загружается один раз, после чего разные процессоры могут ее юзать
Минус - какая версия библиотеки установлена в систему - той и пользуйся. Следовательно нужно учитывать совместимость.
Статические - обычно идут вместе с твоим софтом, интегрируются в исполняемый файл.
Плюс - можно юзать любую версию.
Минус - каждая программа будет грузить в память свой экземпляр всей библиотеки, и если библиотека большая (а зачастую код print(stdout,"hello world) гораздо меньше, чем библиотека которая собственно выводит строку), то расходуется лишняя память и лишнее место на диске.
Отношения к блокировкам процессов ни те ни другие не имеют