Batches are not particularly interesting to the end user, it's more for us developers to test how efficiently the game is being drawn.
V-sync always draws the screen when the monitor is being refreshed to stop tearing. If it misses a V-sync because it's still drawing, it'll wait until the next monitor refresh. So if your game takes just over the time between VSyncs to draw, it'll dip to half the framerate, because frames are never rendered in time for the next VSync, only the one after.
I guess your game is really running at 90-99fps. If your refresh rate is 100Hz, it never has a frame drawn in time for the next VSync, so it only manages to draw every other frame. In windowed mode, the VSync isn't quite so accurate anyway, so it tends to sometimes skip a frame or two a second even if the application isn't doing anything. This probably just exaggerates the problem if your FPS is just below VSync rate.
If you go to 60Hz, it can comfortably get a frame rendered in time for every VSync, so you hit 60fps.
I'd take a look at optimising your game. Whats your video hardware, by the way? If it's powerful, you've got to be doing some pretty heavy rendering to pull down the framerate that low!