The headers you mentioned are added automatically by IIS. Instructions for changing them are at a question posted on Serverfault here.
But to answer your question about when, I believe you're remembering what you read wrong.
I believe what you are referring to is that you can't modify any http headers once content has been sent back to the browser. This would happen in the Rendering event OR as soon as you use a Response.Write or Response.Redirect method.
Edit - added
Incidentally, there are a number of things you can't do oncew the headers have been sent... Modifying cookies, using a Response.Redirect, etc
See these links:
http://stackoverflow.com/questions/159523/why-do-i-get-cannot-redirect-after-http-headers-have-been-sent-when-i-call-resp
http://www.bing.com/search?q=HTTP+headershave+been+sent&src=IE-SearchBox&FORM=IE8SRC
Added even more
And finally - a better answer. I was looking for an event in the page lifecycle where the httpheaders are sent. Actually, they are sent by the HttpApplication object. The event that fires just before this is the PreSendRequestHeaders event per this article.