Great question! Let's define some terminology to make this easier to discuss...
- Static images: Uploaded via FTP (or similar). Not tied into the CMS in any meaningful way.
- Dynamic images: Uploaded via the Control Panel (or synced after FTP upload). Can easily be related to entries and other elements, or even have fields assigned directly to your assets.
Static images are the more "traditional" way of storing images, just as you would with a non-CMS website. There are absolutely some good reasons to use static images... for example, anything on your website which will basically never change (like the company logo).
Dynamic images (aka "Assets") are ideal for dynamic content. If you're writing articles with images, this is a perfect use-case. There are far more complex examples as well, but this is a great starting point.
If an image makes more sense being static, then let it be static. Conversely, if you believe it needs to be dynamic, then make it dynamic. Don't try to force an image to be something that it's not. With just a little bit more experience, it will quickly become obvious which kinds of images should be static vs dynamic.
Here's how I've got my folder structure setup...
/craft
/public
/assets
/(ASSET SOURCE FOLDER 1)
/(ASSET SOURCE FOLDER 2)
/(ASSET SOURCE FOLDER 3)
/resources
/css
/js
/images
My static images go into /public/resources/images
. They are then referenced just as if the site were not using a CMS at all.
My dynamic images go into various subfolders within /public/assets
. Each subfolder maps directly to an Asset Source, defined in the CMS control panel.
NOTE:
Make sure your assets subfolders have proper read/write permissions! Craft will need to interact with those files when uploading, and also when creating image transforms.
Permissions for your static folder can be much stricter... Those will only need to be read, never written to.
Of course, this all assumes that you're storing your dynamic images in a local folder... Things are slightly different when you want to keep your assets in the cloud (S3, Rackspace, Google), but that's a different conversation altogether.
Hope that helps!