тут много чего хочется прямо поправить
самое первое - убрать в классе TForm1 ссылки на экземпляр этого класса Form1
2. отказаться от idHTTP в пользу THttpClient
3. release обычно не требуется. если все написано хорошо, то FreeAndNil() самое то. а если плохо, то до конца все равно не спасет
4. архитектурно не очень идея визуальному компоненту привинчивать насмерть невизуальный функционал, ну да бог с ним
5. не надо думать что Potok.Terminate вообще хоть что-то делает, кроме как Potok.Terminated:=True. Это если у вас в Execute цикл, вы можете проверять if Terminated then exit... не более того.
6. если вы создаете компоненты динамически, то держите ссылки на них у себя, чтобы не делать for i := Form1.RoomsScrollBox.ComponentCount-1 if ...
7. концепция потока и его родителя должна быть такова: подразумеваем, что поток может пережить родителя, поэтому почаще надо проверять, if terminated то ничего не делая поскорее выходить из потока...
8. при уничтожении компонента нужно не только убить его FreeAndNil(component), но сначала compjnent.Parent := NIL;
при соблюдении этих правил не требуется абсолютно никаких извращений при проектировании