The delta IPOS (dLoc, dRot, etc) are relative rather than absolute.
For example, if you take the default cube in top view, IKey Rot at frame 1 then move forward 10 frames, rotate it 90 deg and key Rot again you get a curve on RotZ as expected (you’ll also get redundant, flat curves for x and y).
If you play it, the cube rotates as expected. If you move the cube somewhere else, the rotation still plays as expected in the new location. However, if you rotate the cube a little then play the rotation, it will jump to the original start rotation then rotate to 90 deg - absolutely as it was keyed.
Now, if you copy the curve from RotZ into dRotZ and delete the original RotZ curve (and the X,Y curves) it acts differently. Rotate the cube a little first then play the animation. Now it starts animating relative to its newly rotated start position. It still rotates 90 deg but it’s start and finish positions are relative to the starting position you give it.
This is a useful way of getting multiple objects to do slightly different things without giving them all different curves. Just copy and paste curves into dRot (or dLoc etc) and then give each a unique starting position. You can also move the curves around and edit them a bit to tweak the differences if you make them single user first.
To copy a curve, select it (white points), press the arrow (copy to buffer) then go to the new channel (eg. dRotZ), press the other arrow (paste from buffer). Delete the original curve by select then XKey.
Now… If you want an object to always rotate around one point, you can move its object centre to that location (place cursor then click “Centre Cursor”) then just make a standard rotation curve. If you want it to sometimes rotate on its default centre and other times rotate around an external point, you may be better off using a curve path for the external rotation contolled by a time or speed IPO… I think.