If your goal is making a 2D game engine, but no game, then cool. But if your goal is making a 2D game, then make the game, not an engine. Engines aren't really used for 2D games much, and focusing on the engine and over-engineering it leaves you without a finished playable project at the end.
Regardless, it doesn't matter what language you use, or what libraries. Use the language you already know best, and the libraries you are already familiar with, and work with those. Unless your goal is learning a new language or a new library, and not completing a game.
Is your goal: (pick one)
A) Making a game
B) Making a game engine without a game
C) Learning a new programming language
D) None of the above
If A, let us know what language you already are most familiar with, and someone can recommend a good 2D graphics library for that language.
If B, let us know what language you already are most familiar with, and someone can recommend a good 2D graphics library for that language and some architectural articles or books.
If C, learn Python.
If D, could you elaborate on your actual 1 (one) primary goal for this project?
Note: There's nothing wrong with wanting to make a game engine as a goal - it's really fun to do - just realize it comes at the expense of actually making a game.
Many beginners think they need an engine to make a game, but that's not true, and they end up tripping over their 'engine' and failing to produce a game. This is the only point I'm trying to get across. The idea of an engine is appealing, but misleading, to game developers.
Engines come out of games before games come out of engines. Engines are the reusable components of pre-existing games wrapped up in a consistent and easier to use interface for future games - but focusing on the engine without a solid game in mind leads to an engine that isn't usable for any real game with heavy alterations - unless a developer has already made a half-dozen real games, in which case the real-world requirements of engines are already in his mind.
Making an engine instead of a game is putting the cart before the horse - from finished games come the knowledge and re-usable pieces to make engines.