Are they adament about following the camera? I would probably tend to make their arrow keys move the stool but allow them normal camera operation incase they didnt' want to spin around all the time.
The gist of what I'd do is as follows, probably took more time to explain it here than do it hehe:
a) initiate all of this when they sit down using a couple of functions:
changed( integer change ) <-- event triggered when you sit on it, or anything changes
and check if(llAvatarOnSitTarget() != NULL_KEY) <-- is somebody sitting on it?
see:
http://rpgstats.com/wiki/index.php?title=LibrarySimpleHoverTextRemovalOnSitb) take control of the CONTROL_LEFT|CONTROL_RIGHT controls and tell them to go into mouselook when they want to rotate (or shift-D, shift-A). That way they could still camera around while in a fixed position if they wanted to. This uses the library function LlTakeControls(); Which is a little wierd but not too bad, any free vehicle script does it, as do many others that do things much like you are trying to do. The gist of it is, make a permission request:
llRequestPermissions(llGetOwner(), PERMISSION_TAKE_CONTROLS);
then actually take control in a special event that you will get:
run_time_permissions(integer perms)
{
integer desired_controls = CONTROL_LEFT | CONTROL_RIGHT;
if (perms & PERMISSION_TAKE_CONTROLS) {
llTakeControls(desired_controls, TRUE, FALSE);
}
}
Then, handle those controls whenever they move their arrows in mouselook, or with shift-A or shift-D, in another special event you will get:
control(key id, integer held, integer change)
{
if (held & CONTROL_LEFT)
{
llOwnerSay("left"

}
else if(held & CONTROL_RIGHT)
{
llOwnerSay("right"

}
}
c) use those control overrides (they would get a popup when they sit down asking for permission for the stool to animate their avatar, like in a car etc) and rotate the chair about the correct axis (not always Z, depending how the chair was built). Rotating the chair is done very similar to any free door script opens a door, using llSetRot() function.
see the following example (rotations are a bit tricky):
vector degrees = <0, 0, 5>; //5 degrees around the z-axis, in Euler form
vector delta = degrees *= DEG_TO_RAD; //convert to radians rotation
rotation current_rot = llGetRot(); //current rotation
rotation delta = llEuler2Rot(delta); //change in rotation to apply
rot = delta * rot; //new rotation, after change
llSetRot(rot); //do it
//note, use <0,0,-5> to go the other direction.