http://www.cncezpro.com/g43m.cfm
Basically if you write G43 H01 Z5 the tool tip will move to Z5
So the value stored (by you) at H01 in the controler is the length of the tool.
When you write G43 H01 you tell the machine that the tool is "this long".
And then when you move to Z5 you move the
tooltip to Z5 and not the
spindle zero.
Then the next tool you do the same thing and this way you never have to think about the tool length when programming. It will always go to Z5 (5mm above where your working coordinate system is set)
Hope this clears it up