What's the difference between the public_html and www folders?

There really is no difference; Your web root (where you upload your web site (web accessible) files to) is the public_html directory. The www directory is just a symbolic link (i.e., an aliased name that points to the same place) as public_html. To upload/publish, you should use public_html, however, since some FTP and other publishing software can complain about a symbolic linked directory.

Important Note regarding symbolic links; they are simply another path to the same area, they are not copies (removing a file from one will remove the file from both locations!).

Why is this done you might wonder? This is for compatibility with the two default web roots hosting providers often use, to make migrating to our services easier by not having to change paths in scripts users might have from a previous provider that used another web root name.