Wenn GUICtrlRead($LadeImmer) = $GUI_CHECKED ist, dann schreibst Du den Wert 1 in die Sektion [001] der .ini und löscht die Sektion [002].
Andernfalls (also $GUI_UNCHECKED) schreibst Du den Wert 2 in die Sektion [002] der .ini und löscht die Sektion [001].
Bei If IniRead ... fragst Du aber nur die Sektion [001] ab. Diese wurde in Fall von $GUI_UNCHECKEDaber gelöscht. Es greift also die Vorbesetzung 1 und liefert immer CHECKED.
EDIT WhiteHorse :
Zudem liefert If IniRead($ini, "001","HarkenOn/Off Von Laden Immer", "1") Then ... immer TRUE, egal ob beim Value= "1" oder "2" steht.
In beiden Fällen ist der String besetzt, und nur das wird hier geprüft.
Warum verwendest Du überhaupt zwei Sektionen ([001] und [002]) ? Eine würde doch völlig ausreichen.
P.S. : Haken , nicht Harken