Calling
sync carries out most of the internal updates as stated above; it
♦ updates the built-in 3D animation system
♦ renders the 3D scene to the back buffer
♦ switches the back buffer with the front buffer
♦ updates whatever else (sound, music, etc. if that is really updated at all; maybe it carries out things as volume changes you've set earlier in the subsequent sync).
The reason you might want to turn it off when using the built-in
input function is that this one blocks your program until the user presses the return key. It will thus print out the characters the user enters to the back buffer, but since your program never leaves the input command to issue a sync call, the buffers are never switched and you thus don't see these updates on the screen. If you turn the synchronisation "off" what you're really doing is telling DBP to sync at regular intervals by itself. This will thus happen even if you're in the middle of the input function. But it can also happen in the middle of repositioning objects in your scene and thus create incorrect renders, which is why you generally want to call it at times that you decide yourself (such as at the end of a loop cycle).
Edit: That was pretty poorly written... I blame all the "thus":es on the late hour
"Why do programmers get Halloween and Christmas mixed up?" Because Oct(31) = Dec(25)