Here is my situation: I am using three different Macs (Macbook Pro and two iMacs - one at home and occasionally second one at work) and need to keep the contacts and calendars synchronized at least between two of them (MBP and home iMac). I use iPhone which also has calendar and contacts. And in the cloud, there is Google calendar. Actually, more than one: my own calendar and company shared calendar of my colleagues from Thinknostic. Quite a challenge to keep it all in sync.
Here is the setup that works for me:
To synchronize iCals between different Macs as well as between Mac and iPhone, the most seamless and completely painless way seems to be using Mobile Me. I registered for Mobile Me back when it started - just to grab the name (miro at me dot com), and have not used it much at first. Thanks the 30+60 day extension, I have still until mid November ti decide whether I will keep it or no. The sync feature alone seems to be worth at least half of the subscription price. The other half is push email and really easy way how to synchronize files between Macs ... Also to have online access to your contacts when you are not on a Mac can be useful sometimes. But back to the workflow:
Theoretically, both iCal and address book gets synchronized every time you sync the iPhone with Mac. This is not really as useful as it may sound, because I do the sync about once a week to download images from camera and upload new podcasts. And to update the apps, of course. I would not do that more often, for simple reason: the synchronization takes forever. Ten minutes at least. With Mobile me, you can sync as often as you want (every minute if you really want) - and also access the information online via browser.
To synchronize Google calendar used to require some helper applications, like GCalDaemon (free, opensource) or Spanning Sync. Not any more. Since Google opened up the API this summer, it can be done out of the box: read more on here
This solution is almost perfect, the only relatively minor problem is that sync between iCal and Google does not include iPhone: the calendars that you have added to iCal and are coming from GCal are left out - Mobile Me synchronization does not include calendars not created or owned by iCal application. This is not such a big deal as it may seem because from iPhone, you can always access the Google calendar by using the very good mobile Web UI.