1. That is what tells the web browser the contents of the document is of an Excel format, and is essentually a requirement to 'create' an excel document without a bunch of additional code.
2. Gridviews are FULL of controls. The idea of object oriented programming is to allow your code to grow (or shrink) to your needs without re-write for each separate instance. So it would make sense to eliminate potential objects in your gridview which would turn into unwanted items in your excel document. For instance: If you like to allow your users to sort your gridviews by a clickable column header, then you have a linkbutton in your gridview. That translates to a hyperlink in your excel document with javascript and html code being triggered when the excel user clicks them. You wouldn't want that. Even if you dont do it with THIS gridview, why change the code when you could just call on it genericly each time you needed it in the future?
3a. Setting up the styles in excel... this helps to translate your gridview color scheme into one which isn't limited to web browsers. That style overriding the .text property in particular is ensuring that excel knows how to display your excel table.
3b. AllowPaging to true is a setting in your gridview which indicates that you want some autogenerated clickable links in the bottom part of your grid so you can 'page' through your data in pieces, instead of all of the rows at once. You may not have it in one gridview, but in the future you may.
4. Its a requirement to enact a workaround to allow you to change the page definition and to avoid future errors that come if you do not do it. Good nuff reason (some of these things are done through trial and error).
finally. I dont know how to freeze an excel row programmatically though this process, though I can do it in a webpage (gridview) with stylesheets.