The Requirements engine in SS writes all JS (unless write_js_to_body is set to false) before the closing </head> in the order
JS Files
JS Custom Scripts
CSS
Other Header Element
This is terrible if your using jQuery. Why does Silverstripe make this such a pain in the ass?
We use jQuery on mostly all of our sites without any issues - you can wrap the jquery in a closure see http://doc.silverstripe.org/javascript. You can also configure SS to disable the prototype form validation and block prototype files if needed. To disable prototype validation you can set
Validator::set_javascript_validation_handler('none');
in you _config file and block any files that try and sneak through by using Requirements::block('path/to/file'); In the next major version of SilverStripe we will have hopefully got rid of all this prototype code. We're still going through the transition phase so its a tad messy at the moment (2.4 has a bit of JS cleanup in it).
As for including conditional stylesheets - my work around is just use a more specific css selector in the ie stylesheet. A wrapper for conditional stylesheets is pending some more enhancements to the template engine http://open.silverstripe.org/ticket/4153. I doubt the SSViewer tweaks will happen very soon but you should be able to use more specific selectors for now. If you don't like that then bypass the css requirements style and just use link tags :D