They are sent based on 5pm the previous day in your calendar's local time zone.
From Google's page:
Reminders for events that last the
entire day ('All Day' events) are
based on 5:00 pm the day before the
event (according to your current time
zone). If you choose to receive your
reminder 10 minutes before your "All
Day" event on August 24th, you'll be
reminded on August 23rd at 4:50 pm.
To share an event
You should be able to change this when you click to edit the event.
(I'm looking @ this now as I'm telling you)
Click the event you want to get to the edit page.
To the right middle of the screen you can add guests and give those guest privileges. After you've enter the email(s) of the guest(s) you want to add, click add.
Down at the bottom of the page is privacy settings. If you need to make the event public naturally you should know what to do.
If you click the link "Publish this event" it'll create a link you can share with others.
To share the entire calendar
If you are trying to share the entire calendar, on the main calendar page click the arrow next to the calendar and select "Share this Calendar". Follow the instructions and you should be good to go.
This link leads you to a search (through google calendar help) of sharing topics. If it doesn't help you can always search again in the search box.
Source: http://support.google.com/calendar/bin/answer.py?hl=en&answer=36598
Hope this answers your question.
How about this?
Remove the person's email address (or multiple email addresses) that you want to resend it to by clicking on the trash can to the
right of their email in the "Share This Calendar" tab.
Now click save at the bottom of that screen It will take you back to your home calendar screen and now all you have to do is go back in
to the "Share This Calendar" tab and re-add those email addresses.
Click Save Again and now it will resend the invite to only the names you just re-added.
Source: http://www.google.com/support/forum/p/Calendar/thread?tid=229aaddb510b693b&hl=en
Another thought
Have you tried sharing the calendar ID? It's in the specific calendar's settings. It's another way to share the calendar.
(This is in comments but I'll add it here to make it easier for everyone else.)
I've found this. Not sure if you've been through it and I'm not quite entirely sure how to answer the questions so I'll pass it off to you. http://support.google.com/calendar/bin/answer.py?hl=en&answer=144119 . And I found this http://support.google.com/calendar/bin/answer.py?hl=en&answer=143754. If you read the section about sharing with specific people outside your domain, it gives what you can't give them permission to do. Like see private events.
You're going to need those "outside" people signed up for account inside your domain for this to work. It's the only way.
Best Answer
To avoid creating so many events, you should take advantage of the built-in rule engine of the iCalendar standard (RFC5545) supported by Google Calendar.
The below should work in a fully iCalendar compliant calendar but I do not believe that Google Calendar would support it