Фреймворк рулит вашей программой, ваша программа рулит библиотекой.
Фреймворк обычно содержит много библиотек. Вы подбираете фреймворк для выполнения задачи, пишете программу под эти задачи, фреймворк в нужные моменты вызывает её. Аналогия с анатомией: берём фреймворк слона, пишем программу переноса брёвен - и все, наш слон наряду с другой жизнедеятельностью будет грузить бревна. При этом фреймворк волка не подойдёт для этой задачи - не содержит нужных инструментов и библиотек.
Библиотека содержит полезные функции, которые могут быть использованы в разных программах, например: библиотека отправки писем содержит ряд функций для соединения с почтовым сервером, отправки письма, обработку возможных ошибок. Т. е. ваша программа вызывает эти функции, рулит ею.