The www directory on cPanel servers is just a symbolic link of the public_html folder. You can upload files to either/or, they are basically the same directory. Some hosts will instruct their users to upload files into the www and others into the public_html, but they are basically the same, and the public_html is the real directory while the www is just a symoblic link to the public_html directory. Other servers may have the public_html directory named something totally different such as httpdocs, htdocs, sitename, web etc.
You can't acess files via the web, or at least you shouldn't be able to, that are stored in your root (home) directory which is usually one directory up from your public directory. You can use your root (home) directory just for storing files that you don't want others to gain access to via the web or other reasons like others have said above and/or put configuration files for your scripts and things like that in it. It's usually also used for things like storing your webstats, mail, temporary files and configuration options for your account. The root folder would also be considered your home directory and the public_html directory may be considered your root directory for web accessible files.
The public_ftp directory is for anonymous ftp. If it's enabled, this will allow anyone to login to your site via ftp anonymously and depending on the settings users can view files that are stored in the directory, upload files to the directory, download files from the directory, or delete files from the directory. When a user logs in anonymously they would see the files that are stored in the public_ftp directory.