Начну с самого простого, основываясь на том, что я понимаю.
Библиотека - это нечто, расширенное в программу, действительно распространенным примером может быть файл .dll (библиотека динамической компоновки), который расширяет функциональные возможности приложения, в которое она включена. Я склонен считать библиотеки похожими в Есть много способов для классов, потому что они расширяют существующую функциональность до чего-то, что изначально не имеет этой функциональности (я не очень разбираюсь в библиотеках, поэтому, пожалуйста, исправьте меня, если я ошибаюсь). Хотя это еще не все библиотеки, поэтому я укажу на википедию:
http://en.wikipedia.org/wiki/Programming_library
Фреймворк довольно просто объяснить, это в основном набор библиотек. Когда вы ссылаетесь на объект в XNA (скажем, вы хотите создать StringBuilder), тогда среда, которую вы используете, ссылается на System.Text (EDIT: который является частью mscorelib) для доступа к классу StringBuilder. Таким образом, в этом примере (как указал Алекс) речь идет о StringBuilder (класс) Text (пространство имен) System (другое пространство имен), которое является частью mscorelib (или библиотеки .NET согласно MSDN).
Игровые движки похожи на фреймворки, но они немного более сфокусированы и доработаны. В целом, я думаю, что игровой движок включает в себя такие вещи, как ресурсы, редакторы, встроенные функции и т. Д., Которые вы не обязательно найдете в XNA. Я думаю, что одним из самых больших преимуществ (насколько я понимаю) использования игрового движка являются ресурсы. Вам не нужно создавать свои собственные текстуры, они могут иметь некоторые модели, звуки, анимацию. Это более полный набор инструментов для создания видеоигр, в отличие от необходимости создавать все эти вещи с нуля. Я снова укажу вам на Википедию для более подробной информации:
http://en.wikipedia.org/wiki/Game_engine