Re: IE :first/last-child overwritten
Oh, very interesting! I hadn't thought of this since I never use the :first-child pseudo-class due to IE6's lack of support.
The way PIE works is it inserts an element as previous-sibling to the target element. So all of a sudden, PIE's element is the first-child rather than your first li element!
I can't think of any way around this at the moment. I've opened ticket http://github.com/lojjic/PIE/issues/issue/54
so it's logged as a known issue. It may end up going into the documentation as an unavoidable caveat.