Okay, so the sleep margin...
if you set the game FPS to 60 and the real FPS runs much faster, there's an amount of time that the game has to wait before rendering the next frame. Normally you would want to issue the OS "Sleep()" command for the time remaining so the OS gets that time back and can save power, battery and run other things.
However... Sleep() isn't very accurate (on windows at least). So this value lets you tell GameMaker the minimum value it'll ever try to sleep for in ms. If the time left is >1ms (if that's whats set in the options) then it'll try to use a sleep() for that amount of time. This gives the maximum time back to the OS,
However....If it spends most of it's time sleeping, with Power Saving etc being what it is these days, windows suddenly thinks the machine isn't that busy and so starts to power down the CPU and graphics card. By raising this number (to 10 for example), this means it'll spend more of it's time in a tight loop waiting for the next frame. This will give a more accurate timing, but will also burn more CPU time and power. This will satisfy Power Saving (as you're machine is now doing something most of the time), but on machines with batteries - laptops and mobiles, this can cause fans to come on, and power to drain quicker than normal. This is why the value was made user controllable. The higher the number, the more time it'll spend spinning and waiting, but the more accurate it'll be.
So, by switching the timing method from vsync to sleep margin, you are using the sleep margin timer to govern refresh rates, which means you should ALSO ensure the sleep margin is somewhere between 10 and 20ms. As for the update being tied to the refresh rate, if the real FPS drops below the game FPS, you'll simply get lag. Keep in mind that the framerate and the game logic are absolutely linked and so you can't update one without updating the other. If the game lags, then the display will lag too causing stuttering etc...