What utm_id is for
utm_id is the campaign ID in the UTM family. Google's definition is short: "Campaign ID. Used to identify a specific campaign or promotion." A marketer typed it into the link, or an ad platform filled it in. It says nothing about the person clicking. Everyone who clicks the same link carries the same value.
utm_id and utm_campaign do different jobs
utm_campaign is a name you read in reports, like january_promo. utm_id is meant to match the campaign IDs in a cost file you upload to GA4. In GA4 it fills the Session manual campaign ID dimension, and Google's help page tells you to use "the same IDs that you use when uploading campaign data." That upload is what utm_id is for.
Where it matters: importing ad costs
GA4 can import cost, clicks and impressions from campaigns that run outside Google, such as email and social ads. In that import, source, medium and date are required. Campaign ID is listed as "optional, but highly recommended", and it has to match the utm_id on your links. Values are case sensitive, so 123ABC and 123abc count as two different campaigns.
If you never import costs, utm_id adds little. It is optional, and most tagged links you come across do not carry it.
What happens if you remove it
The visitor sees no change. For the marketer, the visit arrives with no campaign ID, so that dimension reads (not set), and Google's cost import still joins on source, medium and date, but the costs can no longer be tied to that campaign ID. Google names utm_id among the five parameters it strongly recommends setting whenever you set any UTM tag at all.
A worked example, decoded
The example link above is adapted from the one in Google's own documentation. Paste it into the decoder and it splits into the page, https://store.example.com/boots, and four tags. GA4 records source promo_email, medium email, campaign january_promo and campaign ID 123abc. Build your own set with the UTM builder, and see the utm_source page for naming rules that apply to every tag in the set.