A tag is a simple text label attached to a contact, such as facebook-lead, booked-call or do-not-call. A contact can have any number of tags. Tags don't hold values the way custom fields do. A contact either has the tag or doesn't.
Because they're so light, tags are the glue in most GoHighLevel builds. They mark lead sources, campaign membership, stages of a process and opt-outs.
In practice
Tags get added in many ways: by hand on the contact record, through a bulk action on a smart list, by a form or survey, by a workflow "Add Contact Tag" action, by an import, or through the API. The "Contact Tag" workflow trigger fires when a tag is added or removed, so tagging a contact is the standard way to start an automation from outside it.
Tag hygiene matters. Snapshots bring tags into new sub-accounts, and over time near-duplicates pile up (fb lead, FB-Lead, facebook_lead), which splits smart lists and breaks workflow filters that expect one exact spelling. Many agencies keep a short naming convention, like lowercase with hyphens, and add dates to tags that mark one-off events.
Where it shows up in RGS Tools
Blast Follow-Up' resend tagger adds one dated tag to every blast recipient who never replied, so the resend is a smart list filter away, and automatic daily runs do it for each new blast on a schedule. Backup & Insights's document analytics can break contacts down by tag.