The Sync() command does all the input/output coordination.
Every time it is called, it updates touches (clicks). And it doesn't keep states detected during the previous Sync() call.
In Tier 1, it is generally a good idea to do the Sync() call once per cycle and at a point where all activities will be checked and available to processing before the next Sync() call.
But, there are times when you might do it differently. If you want to pause all processes while waiting for a specific button press or click, then you might set up a loop checking for that one process and doing a Sync() until the activity happens.
Cheers,
Ancient Lady