Das dumme ist, dass die
VCL nur aus einem Thread heraus verwendet werden kann. Sonst könntest du einfach für jedes Fenster einen Thread erstellen - das wäre meiner Ansicht nach unabhängig genug.
Problematisch ist, dass du die Imagelisten nicht zwischen zwei Programmen teilen kannst. Die Handles sind nämlich Prozess-relativ.
Zum Teilen von Stringlisten würde ich von TStringlist abraten und stattdessen ein Array von kurzen Strings verwenden, das du über die MMF teilst. Das hat den Vorteil, dass du nicht ständig LoadFromStream aufrufen musst, sondern inline arbeiten kannst. Du musst nur aufpassen, dass das Ganze threadsicher ist.