In this case, developing on Salesforce isn't that different from other development. You have the same trade-offs between options 1 and 2 - keeping CSS separate as static resources allows multiple Visualforce pages to share the same CSS, but you have to upload the CSS to a static resource. Dropping them in the Visualforce page is quick and easy, but you'll find yourself pulling them out when you write the next Visualforce page that wants to share the styles.
One more consideration - if you just have some CSS, then it's convenient to upload it directly as a static resource and access it from Visualforce like this:
<apex:stylesheet value="{!$Resource.style_css}"/>
If you have CSS, some images, a bit of JavaScript etc, you'll probably want to zip them up and upload the zip as a static resource. In that case, you'll include the file(s) a little differently:
<apex:stylesheet value="{!URLFOR($Resource.my_resources, 'css/styles.css')}"/>
If the CSS references other resources within the zip, for example, background images, relative URLs (e.g. ../images/background1.png
) work just fine.