In my opinion it's perfectly ok to load CSS files in the header of your html, just to ensure that the styles are loaded before the body get's rendered.
Further Google Insights tells you to deliver your content compressed by gzip e.g.
To achieve this, you have two options.
- Configure it on IIS
- Configure it inside your Web.config (useful if you don't have access to the IIS)
You should consider to reconfigure your Caching Settings. There is a useful section in the documentation here.
Another important notice is optimizing images. You should make sure, that you just deliver images, that are big enough for your containers. So if the maximum width of the image that is shown is 600x500px, you need to make sure, that it isn't delivered in 1000x800px. This is a kind of complex topic considering responsive webdesign. Useful for this is the <picture> tag of HTML5, where you can define different pictures for different media queries.
Besides delivering images bigger than they need to be, you should make sure, that they are saved compressed. Most of the time, there is no need to save them at the highest quality available (this is a neat small tool for png compression)