you could also use handicap which by default changes health of all player's units - existing and future ones.
Here are some relevant actions beside just handicap that could affect difficulty:
-
Actions
-

Set VariableSet handicapPlayer = Neutral Hostile
-

Player - Set handicapPlayer.Gold upkeep rate to 40 //will basically receive only 100-40 = 60% gold from gold mine
-

Player - Set handicapPlayer.Lumber upkeep rate to 40 //same but with harvesting lumber
-

Player - Set handicapPlayer handicap to 50.00% //affects health of all units including structures
-

Player - Make handicapPlayer's units deal 50.00% of normal damage //seems to affect both standard attacks as well as damage from spells
-

Hero - Make handicapPlayer Heroes' revive time rate to be 200.00% of normal rate //double the time to revive
-

Hero - Make handicapPlayer Heroes gain 50.00% experience from future kills //half XP from kills
While the description of '
Player - Set handicapPlayer handicap to 50.00%' actions says heroes are less affected by the handicap, so far that does not seem to be the case (at all levels a 50% handicap halved hero's health).
Also, for action '
Player - Make handicapPlayer's units deal 50.00% of normal damage' the UI will not get updated for some reason. So if a unit deals 40 damage at 100%, then you handicap it to 50%, the UI will still show that the unit will deal 40 damage, but the actual damage from the unit will be 20.
You can also turn this the other way around, for example setting
-
Player - Set handicapPlayer handicap to 200.00%
will double the hp of units, similar approach can be used for the other actions except for the gold and lumber upkeep rate - if the number is not between 0 and 99, then the player will not receive anything (even if gold in the gold mine will decrease and trees will be cut down). Also, you can't receive a fraction of gold, so setting gold upkeep rate to 99% will not give you 0.1 gold from 10 gold mined, it will get rounded down to 0 gold.
Edit:
For adding "something new to wave" - you would need to add logic to your triggers that spawn a wave to also check the value in 'Difficulty' variable Chaosy wrote about - then you could have something like
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-

If - Conditions
-

Then - Actions
-


-------- spawn additional unit --------
-

Else - Actions
-


If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-



If - Conditions
-



Then - Actions
-




-------- spawn even more powerful unit than for difficulty 1 --------
-



Else - Actions
You could also add some abilities which require a tech to be researched.
For example imagine one of the wave units is a Death Knight - this unit could have two custom non-hero abilities - 'Death Pact' and 'Unholy Aura'.
The 'Death Pact' ability would require a tech called 'Hard Difficulty' and the 'Unholy Aura' would require a tech called 'Evil Difficulty'.
When you choose difficulty, you could have something like this in your trigger:
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-

If - Conditions
-

Then - Actions
-


Player - Set the current research level of Hard Difficulty to 1 for Player 1 (Red)
-

Else - Actions
-


If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-



If - Conditions
-



Then - Actions
-




Player - Set the current research level of Evil Difficulty to 1 for Player 1 (Red)
-



Else - Actions
Or you could use a single tech with multiple levels which may scale even better:
-
Player - Set the current research level of Difficulty Tech to Difficulty for Player 1 (Red)
The good thing about techs is that they can for example increase movement speed of all units that use that tech, allow some spells when researched, etc.
Another good things about techs is that you could have just those X techs (one for each difficulty) or a single multi-level tech and then you would use that tech(s) as requirement for all your wave spells. You would not need any complicated triggers to determine which ability to add to what unit for which difficulty, instead the unit would have all its spells set in object editor, they would just be blocked by the tech and to allow the spells for given difficulty you would just research a single tech via triggers.