Here’s my personal thoughts:
If you are on a tight budget, clearly CASE 2 wouldn’t be sensible since running and scaling bandwidth would cost a bomb over time. If you not using any cloud hosted server services, you probably be required to maintain your own server hardware. Bear in mind, the difficulties of tuning and optimising regional load (you might need to deploy several servers across the globe to accommodate users from different region for performance reasons).
On the alternative, you wouldn’t need a real time server side game engine in CASE 1. Most of the functional requirements you mentioned does not need a game engine to execute. So nope, you barely need to run cocos2dx for the server side.
What if I have the budget?
Then that depends on what type of games are you building. Do you need to synchronies real time physics world across the clients? If you don’t, I don’t see why you need a server side game engine.
Even if you need to do so, there are a few lightweight physics engine out there to enable you to do physics calculation without the visual renderings. You can even use those physics engine on you server side that cocos2d-x have embedded (chipmunk, box2d).
If you just want the easy - brute force way out, just run similar setup (cocos2dx) on the server and client. They work. Just not as elegant or effective.
Hope it helps, any additional feedbacks are welcomed.