ok so
UID is the unique ID, every time an object is created, UID goes up by 1 and assigns that UID to the object, every single object type is part of the same UID group, UID for an object never changes, UID never gets recycled, which means once an UID has been used for an object, it will never be used ever again and it keeps incrementing.
IID is unique to every object type, meaning every single object will be in a different IID group, sprite1 will have their own group of IID, sprite3 will be in a different group. IID changes, when an object is deleted, every object with an higher IID, their IID goes down by 1, when a new object is created, it becomes the object with the highest IID, meaning IID is ordered by creation, older objects have a smaller IID
You usually use IID when you want to pick a specific object type in a loop or something, like, if you're looping through every object count in the "car" family or when there is a predetermined hardcoded amount of them.
UID is fast and is for picking a specific object project wide like, you store a character's UID in their hat sprite so you can set the hat's X and y positions to the position of the character sprite picked by UID or soemthing something