Calendar Talk:Calendar Discussions
There is already two set "standards" on how to synchronize mobile clients with a server (in this case the calendar application will act as the server and the mobile clients as clients to the server - however this is not a requirement and it is fully possible for the desktop application to act as a client against another application).
These two are the Open Mobile Alliance SyncML Data Synchronization and the IRMC standard.
Both these standards includes information about how they assume that sync works. Aside from that SyncML DS should probably be implemented soon because it is the most standard way to synchronize mobile clients (and even more so in the near feature since SyncML DS is now part of the Vodafone requirements for phones).
The SyncML DS requires the server to do all merging of individual events / contacts /objects, if they both changed in the server and in the client. However for each entry added / deleted and changed both the server and client is required to keep a changelog. This changelog can be optimized in several different ways to reduce it in size and increase the efficiency of it.
The SyncML DS protocol is also generic so it can synchronize anything although the most common objects are vCard and vCalendar/iCalendar entries.