There's one "account name" which you pick at sign up, use to log in, and can never change (as far as I know), but you can then pick a "user name". The "user name" is what gets shown in any interaction with other users (forums, profile page, chat, in games, etc) and IIRC it doesn't even need to be unique.
Tagging people on your friends list is a great feature to match, since the tags remain when the tagged user changes their user name, which some people do quite often (whether for a joke or just because they got bored of the old one).
It really seems like a great system and it'd be nice if other systems offered the same degree of flexibility.
1. Username, used to login, not visible elsewhere, unique and security related.
2. SteamID, id number which is visible elsewhere and used in their api fairly often; not too different from the username other than being public
3. UrlID - by default a "steamcommunity" link to the user's page is their SteamID, but it can optionally be edited by the user to a custom url. This ID is a globally unique namespace. For example, https://steamcommunity.com/id/gaben
4. Display name ... Yup, the display name. Arbitrarily editable.
Having that many things is dumb. Having an editable url component is dumb (it shoulda just been the steamid forever).
All in all, they're not a good example.
UrlID can be beneficial for the user so the user can choose a easily spellable identifier for the URL in case he needs to share the link often using voice.
Seems like an optimal system except that the UrlID probably is only a use case not that often. But it still won't really hurt anyone. If it wasn't the URL ID it would be steamID, which does nothing to help to remember the URLs. So why is it poorly thought out if it gives benefits to some usecases without making anyone else worse off?
"I want to add you as a friend so we can play games together, what's your name" Mrguyorama + random junk I didn't choose
It's user unfriendly
And I don't really see how this is functionally any different to adding digits to the end of your normal username.
This function is separate from the "tagging" feature, which is helpful for keeping track of those friends who frequently change their display names and avatars. It's also possible to view the list of previous display names a given user has had, at least if you're friends with them.
I wish I was making this up. Maybe they're trying to get their chat app acquired by Google.