All 3D elements have a User ID, known simply as the 'ID'. It can be observed and edited in the Info Box (near the top in our setup) and in the Settings dialog under the Listing And Labeling division.
The only 2D element with an ID is the Fill.
I wish other 2D elements had IDs. Then I could 'name' topo contours after their elevations.
You can access the ID field of a selected element by typing 'I'.
If the default settings ID ends with a number, the number will increment (increase by one) as elements are placed. Unless you switch off this preference in Preferences -> Miscellaneous. N.B.: The numbers will only cycle through the available numeric places. I.e., ABC9 will be followed by ABC0, but ABC09 will be followed by ABC10.
The default IDs of the tools in your templates should consist of an identifier for the tool (E.g., 'Roof' or 'R') followed by at least two digits, maybe three. This gives the incrementing room to operate.
Other than the automatic increment, Archicad never changes IDs by itself, and there's no problem with elements having identical IDs. (This is different from viewpoints, where the name/ID combination must be unique.) When you drag-copy or multiply an element, the copies will have the same ID as the original. When you eyedropper (alt/opt+click) an element, the ID of the next element will match, but the next one will increment, assuming the switch is on.
The ID is picked up by the eyedropper, but an existing element's ID isn't changed by the syringe.
I keep that Auto-increase preference on, and the only time it bugs me is when I'm placing Shape Tag objects for revisions, and I have to make sure the triangles say 2, 2, 2 instead of 2, 3, 4. (Really, that's just an illustration, because that object has a setting to use a custom text instead of the ID, but using the ID is easier because you edit it directly by typing 'I', bla bla bla)
Letter IDs do not increment, which makes sense now that I think of it. (WALL, WALM, WALN,... that's no good.)
If an element has an error in it, the ID will often appear in the report window warning. This is helpful, because you can use Find and Select to find elements by their ID, then track down the problem from there.
When you're searching for errant elements in this way, you will probably find many of a given ID, because of the drag-copying and eyedroppering described above. To isolate the troublemakers further, you can manage element IDs using a schedule.
We schedule doors and windows by their IDs, and you can change IDs directly within the schedule.
The only element type we deliberately give a blank ID is doors and windows we want to leave out of the schedule. This includes empty openings and weird openings like trim panels.
Zones have the same ID field as other model elements, but we ignore it in favor of the Zone Number field.
The GDL global variable for user ID is GLOB_ID. Elements also have an internal unique ID which is unmodifiable and invisible except in GDL. That global is GLOB_INTGUID. (I promised you trivia.) I can't recall using that one, but you need GLOB_ID all the time for markers and labels.