There are many various definitions for "Game Engine", but in this context when I'm referring to a Game Engine it's framework designed for the creation and development of games. Game Engines in this context are simply your foundation for building a game upon, they hold several functions needed to build a game, but there is no actual game attached to it. Your engine can have time steps, input, sound, graphics, physics (collision), asset management, networking, and more already pre-done. When you're making your game from scratch you still need the same things an engine would provide, but you're only programming what you NEED, not everything possible.
This is why over a period of time you'll have so much code to handle a variety of game projects, and could even merge code to make an engine as a base for all future games.
Think of game engines like Unity or Unreal, but they're not "games".
Game libraries would be something like LWJGL which are not "Engines" or "Games", but allow you to create them.
Game frameworks are collections of libraries to stream line the creation process, much like LibGDX.
When creating games you can do some of the following for example:
- Create your game with an existing game engine.
- Create your game using an game library which means you need to program everything needed from scratch: Game Loop, Time Step, Asset Managers, Collision, ect...
- Create your game using a game framework which may have a lot more helpers to do a lot of the prior work required when working with a library, such as collision.