I'd like to comment on three topics:
1. In case of shift, should always both horizontal and vertical shifts
be required?
I'd say no, because - besides from the case Werner mentioned (accidental
above note) - you'll always need only horizontal shift. Therefore,
whatever the precise syntax may be, it should be sufficient to specify a
horizontal shift value whereas vertical shift should be optional.
2. What should be the unit for horizontal shift?
I can't think of a reason not to use \qn@width here.
3. Should accidental shifts be relative to notehead shifts?
Although this sounds reasonable, I'm sure that it would complicate
things in nearly all situations. Consider for example:
\sh f\roff{\zq f}\qu e
There's no need at all to stick the accidental to the notehead. Or,
consider this one:
\sh k\loff{\sh g}\loffset2{\sh i}\zql i\roffset{0.3}{\zq g\qu k}
Here, the g notehead is shifted right whereas the same note's accidental
has to be shifted left.
Therefore, I'd strongly vote for treating notehead shifts and accidental
shifts separately.
Regards, Rainer