Just a sidebar to help explain User Specific Columns. User Specific columns will be device specific and only store temporarily while the app is open, ONLY if the user is NOT signed in. If a user is not signed in, then the user specific columns are only temporary. If a user IS signed in, then those user specific column values become attached to that user, regardless of device.
How I believe they work, is that glide creates a hidden table that’s attached to a normal table. This is why RowID’s are required for user specific columns to work. I believe behind the scenes they create a joined value with the user email and the row ID joined together in some way. Then they create a relation from the normal table to the hidden table where all of the user specific values are stored. I think it’s a simple relation/lookup combination that glide handles automatically when user specific columns are added. That’s why it can store values and show them across multiple devices for a specific user when they are signed in. If a user is not signed in, then glide has no way to differentiate which user specific value belongs to which user, so in that case a user specific column value can only become a value that is stored locally and temporarily on a specific device.
While you can impersonate any user within the builder, accessing user specific values for another user from within the published app is not possible. I believe…like row owners…only the user specific values for a signed in user are downloaded to a user device, so there is no way to access user specific data of other users.