Scherzi a parte, magari scrivi qualche dettaglio in più sui motivi delle tue scelte implementative. Ad esempio, perchè usare una GUI separata da un eseguibile e con due linguaggi diversi?

Anche la GUI dovrà essere un eseguibile, suppongo.

Forse il programma EXE è un programma esistente per il quale vuoi realizzare un'interfaccia di richiamo (così come avviene ad esempio per alcuni compilatori o programmi di alto livello che richiamando applicazioni dalla riga di comando)?

La creazione di DLL plugin è un argomento che ho già affrontato (con Delphi); si tratta in fondo di definire attraverso funzioni ciò che vuoi rendere personalizzabile all'interno del tuo programma e fare in modo che ogni DLL individuata all'interno di una cartella apposita venga caricata (sfruttando apposite funzioni API) e vengano agganciate le funzioni necessarie all'interno di ciascuna di queste.

Il discorso è ovviamente molto più ampio e la trattazione molto lunga, quindi magari scrivi qualche dettaglio in più e si potrà vedere di concentrarsi solo sulle particolarità del problema.

Ciao!