1. acs-lang does indeed allow the user to set their timezone preference. If a user is travelling and they want to change it, they can, if not they'll translate in their head. This is no different than when they use a client on their laptop - I never change my laptop's timezone when I travel but add or subtract hours in my head. But certainly other people do.
2. Dates are stored with timezone in OpenACS 4.x in PG. This is due to PostgreSQL history. Changing it would be a PITA (though PG does now support timestamp with no timezone)
3. Today's mail systems like Exchange/Outlook use icalendar format to pass along date information. The scheduling issues are handled by having the calendar server transmit not only the date of an event but the full timezone descriptor which includes transition dates for Daylight (Summer) time, etc.
The user's client uses that information to map the dates to the client's local time ...
I think we can do the same without too much trouble ... we have all the timezone transition information in ref-timezones.