Allora. Ricominciamo.
Come mi hai consigliato, la form ora non ha bisogno di parametri, si modifica con dei metodi pubblici.
Ora.
Ricapitoliamo. Non posso usare un timer nella form, perchè non devo effettuare un Refresh, bensì, devo simulare la ricezione della stringa ogni tot secondi.

Ti pongo una domanda diretta, così forse riesco a risolvere il mio problema.

Ho questa classe che riceve la stringa, fa i suoi controlli, crea l'interfaccia, la modifica ... ed ora?

Ho la form modificata, viene modificata alla ricezione di ogni stringa (che riesco a simulare perfettamente).

Il mio problema è semplice, come faccio nel main ad aggiornare questa form?

Se la do in pasto alla Applcation.Run, senza thread, l'esecuzione è statica, non posso più modificare nulla.
Se metto l'application.run in un thread apposito, riesco a modificare l'interfaccia, ma non riesco a visualizzarla con La Show(), ma solo con la ShowDialog(), e anch'essa deve esser necessariamente in un thread, altrimenti non posso più eseguire altre istruzioni!

Non capisco quando mi dici di mettere tutto nella form. Come faccio a mettere il main al suo interno?
A cosa ti riferisci con Form secondario??

Comunque grazie mille per l'aiuto!

Non ti posto il progetto perchè è abbastanza lungo, non vorrei scocciarti.