Если стараться разделить библиотеки по классам, то их можно разделить на статические и динамические.
Динамические библиотеки включены в ОС. При необходимости программы будет использовать функции этих библиотек.
Статические библиотеки идут непосредственно с программой. И загружаются в нее при сборке.
Плюс статических библиотек очевиден, у поставляемой программы не будет проблем с зависимостями, так как все необходимое уже содержится в ней.
Но такой метод так же делает поставляемый продукт более "тяжёлым"