
There really is no difference: Your web root (where you upload your [web accessible] website 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 use public_html, however, since some FTP and other publishing software may not be compatible with 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 hosting services easier by not having to change paths in scripts users/programmers/webmasters might have from a previous provider that used another web root name.