In realtà non è diverso rispetto alla creazione di un'applicazione che può avere più istanze di se stessa.
Dalla mia esperienza, il problema più grande è il livello di persistenza. Indipendentemente dal fatto che si tratti di un file di configurazione o di una chiamata a un database, sembra che le app vengano intrappolate in un determinato oggetto di persistenza in un modo specifico che rende ancora più difficile avere più istanze in atto.
Dopo ciò, devi essere un po 'intelligente nel modo di deporre le cose. Indicatori visivi come sfondi diversi; testo della barra del titolo; font; account di accesso diversi; diverse posizioni del monitor; ecc ... tutto aiuta a chiarire quale editor è primario / stabile e quale editor è in fase di sviluppo.
Dovrebbe essere ovvio, ma questo implica due alberi di codice separati nell'esempio che hai fornito. Uno per l'editor principale che non è mai cambiato. Un altro per l'editor secondario che è in fase di sviluppo.
E questo approccio regge anche fino al punto di usare l'IDE primario per eseguire il debug dell'IDE di sviluppo come hai menzionato nella tua domanda. Quando si esegue il debug delle funzionalità di debug di un IDE, è necessario inserire un'applicazione separata nell'editor di sviluppo in modo che abbia qualcosa di diverso da eseguire il debug. In realtà, non è poi così diverso dal progetto terziario che avresti dovuto creare nell'editor secondario (sviluppo) per testare le modifiche apportate all'editor secondario.
È possibile essere abbastanza facile da avvolgere la testa attorno a un asse con gli aspetti meta della costruzione di un IDE. La chiave è distinguere chiaramente ciò che ogni progetto sta facendo.