Anticipation* and feedback are the biggest things I consider when talking about combat systems.
Player attacks should have little to no anticipation.** Stronger attacks can have anticipation frames but the more frequent and basic player attacks should try to skip these. The longer the delay between a players input and their characters response, the less in control a player may feel.
On the other hand, enemy attacks should have lots of anticipation. The length of anticipation should correlate to the strength of the attack; the longer the wind-up, the harder the hit. Anticipation frames should be easily recognizable. It should never be ambiguous as to whether or not the enemy is in the middle of an attack. Likewise, each attack should have different anticipation. The player should be able to easily recognize an enemy's attack animation and understand which attack will be coming after the anticipation frames.
Anticipation gives the player time to react. It's a warning that's something is coming. By learning what each anticipation animation precedes, the player can safely choose a plan of action.
Feedback is the most important part of games, let alone combat systems.*** Feedback can be delivered in many different ways; visual cues, auditory cues, physical cues (controller vibrations). Using all of these methods together help to convey success and failure to the player. It's important to not overload the players senses or use the same feedback for both negative and positive events within the game. If feedback is confusing then it tends to become noise. When a player presses a button, they expect feedback.
The attack animation starts up, a particle effect appears over the players weapon. The character swings their weapon, it connects with an enemy, causing the enemy to play a hit animation, knocking it back a few inches and bursting a particle effect at the position that it was hit. The life meter above the enemy drains as damage numbers pop up and fade. On the left of the player, another enemy lunges in, hitting the player with an attack. The players character flashes red, their life meter in the HUD drains, the controller vibrates, a 'Unfh' sound effect is played. All of this feedback adds up to a visceral and rewarding experience.
Clear and consistent feedback rewards the player and reenforces the rules of the game world. Without it, a game might feel muddy or disjointed. Think about the feedback you receive when you step on the gas in a convertible. The engine roars, the car races forward, the tires squeal, the wind blows past you. This feedback is what makes driving fast cars exciting. Make your game like a fast car. Add feedback.
*Anticipation can be called different things. A common example being 'startup frames' in the fighting game community.
**There are always exceptions to the rule. Entire games are built around the opposite of this idea and have great combat systems (Monster Hunter, Dark Souls, etc.)
***Some could argue that since games are an interactive medium, a game can't exist without feedback