Order of statements in CSS is only significant when one rule potentially overwrites another. So within any given element, go from most general to most specific.
The body doesn't have to come first. But your page is not going to start rendering before the whole CSS has loaded, so it only makes sense to put things where you can find them later.
There are page-speed-testing utilities that show in excruciating detail what gets loaded when, and how long it takes.
:: shuffling papers ::
Here's one [webpagetest.org] that I've met recently. (The next passing moderator may swap out this link for something higher up the Authorized List. I found it on web-pages-that-you-know-what dot com.)