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