Best part about Exchange is that you have microsoft for support. There's still a per-user cost associated with it and it is pretty costly, but it's part of the cost of doing business.
From an configuration standpoint, you have 2 calendar options with Exchange. You can either do public folders and configure shared calendars in the public folders for everyone to use, or you can leave it to the users to invite each other to share their calendars and manage rights to each others' resources. (most hands-off method)
Public folders are really bad because they're stored in a database that has to be replicated between a list of Exchange servers (Mailstores). Sometimes replication isn't all that clean and you can have rights that don't always work...it sometimes requires recreating objects or rights to get things to sync properly. In the last revision of Exchange, they released a nice utility for managing public folders and calendar rights called ExFolders. It's made things a lot easier.
For managing user calendar rights, Exchange 2010 SP1 has a few powershell scripts you can run from the command line.
[ PS ] C: \> Get-MailboxFolderPermission username: \calendar
[ PS ] C: \> Add-MailboxFolderPermission -Identity ‘Username: \Calendar’ -User UsertoGetRights -AccessRights Editor
[ PS ] C: \> Set-MailboxFolderPermission -Identity Username: \Calendar -User UsertoGetRights -AccessRights Editor
and you can also run Remove-MailboxFolderPermission username...