My assumption would be that when equipping the tool, your Character’s real arms’ .Transparency values are set to 1 and then a viewmodel is inserted into the character (Or also .Transparency = 0, whichever floats your boat). I would assume the viewmodel is placed in and welded to the head, then you script the head to change its CFrame.LookVector to be facing the mouse.Hit location while the tool is equipped. Then, when the tool is unequipped, return the head back to its original position, make the viewmodel transparent, and make the arms not transparent again.
Edit: There also a slight delay between the movement of the mouse and the movement of the head, which could simply just be a task.wait().