Order of CSS rules come into action when you're trying to avoid clashes between two or more conflicting selectors and/or rules of identical specifity, or deal with precedence between different style locations e.g. author CSS, inline styles, user CSS and so on.
See:
Code:
div p {
color: red;}
body p {
color: blue;}
Both rules have identical specifity, and so only the latter gets applied to a <p> within a <div> according to the rule of the cascade = the <p> will be blue. Switch them round and the <p> becomes red.
You can simply get around this by making your rules more specific, and not have to worry about rule order e.g. changing
div p {} to
body div p {} increases its specifity and it won't be overriden by the other rule.
Whereas:
Code:
#header p { color: red;}
#footer p { color: blue;}
and
Code:
#footer p { color: blue;}
#header p { color: red;}
also have identical specifity, but have no selector conflict. This means it makes no difference which order they're in (assuming they're sibling elements).
Markup order, which I think is what you're really asking about, can sometimes make a difference as to the method you use to lay out a document with CSS. You should aim to lay out your markup in the sequence that makes the most sense when unstyled.
Don't think of your markup order in terms of how you want it to appear when styled. If content1 should come after content2, then that's the order it should be in your markup.
Floated layouts can in particular suffer from markup rules in some implementations - there's some discussion of the problems involved
here and
here.