I think this is covered by this enhancement issue:
Personally I think it would also be possible to have several customer roles to achieve customer based dividing of categories. But I guess this will at some point get horrible in terms of overview.
Public means any not authenticated or customer user, correct.
We currently don’t make a differences between “anonymous” and a customer. (see below comment and issue)
I think this partly is covered by this enhancement issue: