Once you enable PersonalizationID, every generic, guest and logged in users will have a unique personalizationID assigned to them,Refer following link to enable PersonalizationID.
PersonalizationID is useful for targeting marketing content for a user, unlike member id the value of Personalization id once assigned to the site visitor does not change, member id is -1002 for generic and then a random value for guest users followed by registered member id which would not change as long as you are logged in, with PersonalizationID we have the ability to target/track a site user even if the session state transitions from Generic->Guest->Registered user.
For generic users, personalization id can be retrieved using AuditContext.
ContextService bcs = ContextServiceFactory.getContextService();
AuditContext auditContext = (AuditContext) audit
String personalizationID = auditContext.getPersonalizationID();
For logged in and guest users a unique member id is assigned to them and hence a unique record exists in users table, same is not true for generic users, hence for guest and logged in users personalizationID can also be retrieved from USERS.PERSONALIZATIONID column, but for generic users AuditContext is the only option.
As of WCS V7, Feature pack4, personalization id can also be retrieved using OOB REST services, here is a screenshot which was tested by invoking OOB REST service using POSTER Firefox plugin.