I know how to make a Head follow mouse, although I don't know how to use it with filtering enabled, using remote events or bindablefunctions wouldn't be efficient due to over-requesting the server... Any help?
You don't have an option. Because you must replicate it to the server, you also MUST use a remote event (edit* object). I suggest updating it 30-60 times a second on the client (trust me, any modern PC can handle it with much ease), and around 1-10 times a second on the server. You don't need to fire the server each time it updates, either; simply convey the new position to the server (edit* other clients, as to not effect this client with the servers update would be best) every 5 or so times you want it to change, and while waiting for a new one to be conveyed, you simply slowly lerp it toward that position. It wont be laggy enough for it to cause issues, trust me. That's how a lot of FPS games work nowadays on ROBLOX (and probably other platforms, too).