Lo stringbuilder è un creatore di stringa... E' un esempio, non so tu come voglia avere i nomi delle textbox... In pratica:

codice:
//qui lo crei
Dim valoreMemorizzato As New StringBuilder

...

//qui ne cancelli il contenuto, perchè altrimenti ti ritroveresti dei valori duplicati ogni volta che clicchi sul pulsante

valoreMemorizzato.Remove(0, valoreMemorizzato.Length)

...

//qui appendi alla stringa il testo della textbox se selezionata dalla checkbox
valoreMemorizzato.Append(valueToAdd)
L'altro è autoesplicativo...

codice:
//crea un oggetto di tipo Control (tutti gli oggetti che stanno in una form sono anche Control)
Dim currentCheckBox As Control

...

//per ognuno di essi
For Each currentCheckBox In Me.Controls...
    //Se sono di tipo CheckBox...
    If currentCheckBox.GetType() Is GetType(CheckBox) Then

...
Il dictionary invece è un oggetto che associa qualcosa ad un altra cosa... quindi, tu associ ad una CheckBox... una TextBox, proprio come avevi detto! Ecco il perchè dell'istruzione:

codice:
Dim dictionary As New Dictionary(Of CheckBox, TextBox)
Vuoi un consiglio? Dai un'occhiata al codice in fase di debug, così capisci bene quello che fa e se lo fa come vuoi tu! Ciao!