Say your game ran at 60fps and you moved everything 1 pixel across every frame, then it's speed would be 60 pixels per second.
If your code only runs at 30fps, then it'll only move 30 pixels in a second, half the speed.
And if your code is jumping about all over the place, like it tends to do on Windows, then the speed is erratic.
What you need to do is compensate. If you were running at 30fps, you could simply double the number of pixels moved per frame, so 30x2 = 60x1. But more generally, assume the framerate you are running at is based on how long it took to draw the previous frame. If the last frame took 1/60th then add 1 pixel, if it took 1/30th then add 2 pixels. 1/15 is 4 pixels etc. So you automatically compensate.
Taking it to it's conclusion, if the last frame took 1/n seconds to draw, then the amount to move would be
(1/n)/(1/60) = 60/n pixels per frame
It means on slow machines, even though you compute the physics less often, it moves just as far across the screen. You can do it with positions, rotations, colour changes, anything really.
Jim