Hi Dominik,
they kind of do the same but are meant for different use cases.
ncDIRECT - the axis position is set to the Position you provide but don’t care about any relation to anything else like a mechanical system. For example a regular conveyor axis you really don’t need any reference of its position to anything else so you set to zero on homing.
Now if you have a indexing/bucket conveyor, a rotating cutting knife or a robot arm they need to have a referenced position and that’s done with the HOME_OFFSET.
During commissioning you move your axis the reference position like the leading edge of the bucket, the knife edge to some mechanical mark and the robot arm to a homing jig.
Then you set it to zero with ncDIRECT and read the current encoder position. That encoder position is now your offset between the axis and your mechanical reference position you now home to.
Because you now have the offset between those two positions no matter where the axis is on PowerUp after homing it set to its absolute position in reference to the mechanical zero.
This encoder offset will remain fixed until something mechanically changes. Like you replace the motor or the chain of the bucket conveyor is replaced, jumps a tooth. In that case you need to redo the finding the encoder offset routine.
I hope this helps