Hello! Great topic. You have also inspired me to post a story from one of my militaristic games, if you care to look at the story it contains a lot of pictures that you might find useful in how the heavy use of citadels, forts, terrain, can be used to overcome even the most difficult of enemies (almost runaway medieval shaka neighbour, in this case)
https://forums.civfanatics.com/threads/the-tale-of-a-great-war.668095/
Now, I will try to add a few general things to this discussion, other than what the previous posters said.
- It's good to know the damages, to accurately aproximate before hand how much damage units receive in combat. I used to be very afraid to be in range of cities during war, fearing I might lose units, but this is inefficient and loses out on the XP that could have been obtained from attacking and also from being attacked. I had for myself some charts where I noted down how much damage archers and composite bowmen receive from various city strenghts so I can consult during play. Crossbowmen are much tankier, they can take a lot of beating from cities and also from the melee units. Watch out for civs who have Tradition (Oligarchy +50% city attack) and for those with the God of Protection pantheon (+30% city attack), they need extra care when approaching in order not to lose units. Also, care when in Desert/March is needed for their combat penalty.
- An alternative way of taking AI cities is by just killing their units *and* creating a high enough difference of strenght that the AIs will capitulate and give them in exchange for peace. For this, monitor your army strenght and target's army strenght. Check with Military advisor from time to time but take everything he says with a grain of salt.
Obtaining cities this way in turn conserves the population and can make it harder to raze the city but on the other hand it conserves the buildings and can be worth puppeting. Sometimes cities that are not important or their place is not important can be sold to a weaker third party.
War can be resumed in 10 turns, repeating the process until there is only the capital city left.
- In some situations it can be worth trying to pillage the Horse and Iron resources from the enemy, this cripples their army temporarily, even a few turns can be enough to kill more units.
A horseman can be good for this purpose for his mobility or also a chariot in open ground.
- In the average game, success can be obtain without heavy use of citadel/forts but in those cases where the enemy has become too strong and he spams units faster than they can be killed by our army, or when the terrain is very advantageous for the enemy in a few choke points, they can make the difference between making progress or being forced to retreat.
For this purpose, the Honor Policy that increases their spawn on top of a really free general, can be a good idea in militaristic games as it gives you more of them to use.
Also, in my opinion, I think it's good to post for discussion various situations that you encounter in your games that you find difficult to deal with. It's much easier to discuss something concrete from a game looking at a screenshot, so that particular strategies that work in that case can be discussed. Sometimes general things are too general.
I hope any of this helped!