1. What does the "Multiselect=false" property do, if it doesn't prevent multiple selections?
It does exactly what it says on the tin, preventing more than one item being selected if False. But don't misread "checked" for "selected". Because TChecklistBox descends from TListBox, most of its properties are related to listbox functionality. Hence when you click a checkbox to check it you also select and highlight the entire listbox item line. This is not needed for the checkbox functionality, indeed it could be considered an unwanted feature. However the selection is built in to the listbox ancestor, and would be difficult (perhaps impossible) to remove. For your application selection (or unselection) is irrelevant. You're only interested in whether a checkbox is checked or not.
2. Why do I need "if not (Sender is TCheckListBox) then Exit;". Could any other sender "call" (if that is the right word) the procedure?
The typecast TCheckListBox(Sender) is unsafe - it will cause an exception or worse if it fails - unless you can guarantee that Sender is a TCheckListBox. Although it is hard to conceive of a situation in which Sender would not be the control you expect, data coming from outside your routine is outside your control. Just because you
expect it to be a TCheckListbox does not
guarantee that it will be. Better safe than sorry. So I'm more of a belt-and-braces person (if I were American that would be belt-and-suspenders).
I don't need to synchronize the two list boxes -- I just need to prevent one item from being chosen in the second list, but still have it visible.
My point is that as it is written the code
depends on the items in the two listboxes being identical, but does not
ensure that they are. That is a problem waiting to happen if you ever share this code with others who don't realise that the code has this hidden requirement.
So it ought to be documented in comments or an FPDoc file. Or you should add code that tests for identical items and (say) raises an exception if the listbox items differ.