Tilman's right ... the "unregistered visitor" is equivalent to "anonymous coward" in Slashdot. We've always assigned user_id = 0 for visitors who haven't registered and logged into the site, but prior to 4.6.1 user_id was "fake", not represented in the datamodel. Users who are logged in always have a user_id > 0.
The major motivation for adding user_id = 0 explicitly to parties was to speed permissions because it removes special-case checking that existed before. In the future we may tweak things so that letting "The Public" post to a forum would allow unregistered vistors to post anonymously (if one chooses to allow this of course.)
So ... "unregistered visitor" is the party that represents a visitor who is visiting but hasn't registered. "registered users" represents the set of all users who've registered with the system. "the public" represents the set of all users, i.e. the union of "registered users" and the special "unregistered visitor" party.