PostgreSQL: Foreign key on string column
varchar keys are okay, but they do have some issues:


varchars use more space than ints
you are more likely to have to update a varchar value than an int value, causing cascading updates
might not be appropriate in internationalized applications (i.e. different values for different languages)


To answer your particular question, no there won't be a pointer to the value, the actual value will be stored. 

I rarely use varchars in key columns. Sometimes I'll use short char columns like ISO country codes, for convenience. 

Also, you can just use the text type in PostgreSQL, as varchar uses text internally. Also, I'd recommend using unquoted snake_case column names.