How does the synchronization process work?
I have used WebDav for a while to allow iCal to publish and subscribe my calendars using a web server; the main problem was that only one Mac can publish the calendars on the server while the others can just subscribe them, thus I could have my calendars "synchronized" on how many Macs I wish but I was able to modify such calendars only from one of these Macs, the "publisher", the others could just update their local copy in case of modifications made to the calendars from the publisher Mac.
This happens because the iCal's WebDav "synchronization" feature merely consists in a copy of the entire calendar file to (publishing) and from (subscribing) the server, there is no real synchronization item by item to check if some calendar events/todo have been recently added or updated. I have built iSynCal (initially for my personal use) to overcome this limitation and have my calendars synchronized on all of my computers and, much more, editable on all of my computers ... it was even useful to have PHPiCalendar installed on one of these computers to check my appointments and todo from any place in the world using a simple web browser. You can find some good tutorials about setting up WebDAV on OS X and the PHPiCalendar installation and configuration on the Greg Westin's web site.
iSynCal rather works in a totally different way: when a synchronization is started it parses all data from the involved calendars pair and synchronize their events and todo one by one, so that the most recent event/todo overrides the correspondent item on the other side and, if some events/todos have been added, the new items are copied between calendars.
All the PIM applications like iCal uniquely identify any calendar's item (event or todo) using an unique identifier (UID) automatically generated when a new entry is created in a calendar; just for your knowledge, it is something like DACD31F6-258C-11D8-A53A-000A9586DA02.
Since iSynCal makes an extensive use of such UIDs to identify the calendar's entries during the synchronization process and since it only relies upon the UID to identify any event or todo, if you would create on a computer an event with a certain description, start date/time, duration, etc. and later you would create on a second computer another event that could appear to be identical to the former (because it would have the same description, start date/time, duration, etc.), then these events would be identified as two different events by iSynCal because of their different UIDs, therefore during a synchronization they could be just copied between calendars but in any way synchronized.
To properly synchronize an event or todo item it must be created with iCal just once on a certain computer so that it is copied to the other calendar during the next iSynCal synchronization (the Copy new events/todo option must be active). In this way any subsequent change to the event will cause its synchronization (the Sync matching events/todo option must be active), because the event has the same UID on both calendars.
Please note that iCal must be closed on both computers before starting any synchronization task, otherwise the new data can't be saved to the calendar files and data loss may occur. iSynCal will automatically close iCal only on the local computer (the one where iSynCal is running) when a synchronization is started, therefore you must be sure that iCal is not running on the remote computer before any synchronization is started!. If you want iSynCal to automatically quit iCal also on the remote Mac please follow this link.