Design rules, are things like "Track width is 0.3mm", or "Clearance between tracks is 0.25mm". And a "Net Class" binds a few of those basic rules together. This is not unique to KiCad, but probably all EDA suites use very similar system and names.
So, on a digital design, you make for example a netclass for "signal wires". It's all the nets that need thin PCB tracks and a small clearance, so you do not use up too much PCB real estate area. Then you put all the nets which do not need a lot of current into that net class.
You probably want to make a second net class for power. Something like track width of 1.5mm and the same low clearance, because voltage is low. And you put all power supply nets in it.
If you have a PCB with a high voltage, then you probably want to make a special net class for that, with a much wider clearance that is applicable to the voltage you use.
Sometimes these things are a bit contradictory, and then you can use a net tie. A good example for using a net tie is for a shunt resistor in a power supply or current source. The "main" wires going to the shunt resistor can carry a high current, so you put those nets in a net class with wide tracks. But no matter how wide those tracks are, they will always have some resistance, and therefore a voltage drop over that resistance (as long as current is flowing). So for measuring the voltage over the shunt resistor, you want wires directly from the shunt resistor to the ADC. These wires carry very little current, and they do not need to be wide. But the sense wires are still the same nets as the power tracks. If you now use a net tie, you can separate the wide high current tracks from the thin feedback lines. And you put these net ties very close to the pads of the shunt resistor on the PCB.
Netclass Directive Labels are new in KiCad V7. Unlike the other label types, they do not give a name to a net, but they tell in which netclass a net is. This is especially useful for nets that do not have a label by themselves.