Penso di aver risolto il mio dubbio...nel codice, di esempio, sotto:
con "button1" ottengo i valori della colonna e li aggiungo alla combo senza duplicati, utile se non conosco i dati a prescindere...
con "button2", aggiungo i valori che voglio "io" alla combo, se nel dataset non corrispondono l' errore viene gestito da "errore_DataGridView1" che è solo un' abbozzo da rifinire...
Ogni critica o suggerimento e ben accetta:

codice:
Public Class Form1
    Dim ds As New DataSet

    Private Sub Form1_Load() Handles MyBase.Load
        'creo il dataset
        ds.DataSetName = "prova"
        ds.Tables.Add("colonne")
        ds.Tables("colonne").Columns.Add("nome")
        ds.Tables("colonne").Columns.Add("testo")
        'riempo "al volo" il dataset con valori duplicati
        Dim riga(1) As String
        For a = 0 To 1
            For b = 1 To 3
                riga(0) = "nome" & b
                riga(1) = "testo" & b
                ds.Tables("colonne").Rows.Add(riga)
            Next
        Next
    End Sub

    'se non conosco i dati
    Private Sub Button1_Click() Handles Button1.Click

        Dim colonna_nome As New DataGridViewComboBoxColumn
        colonna_nome.HeaderText = "nome"

        'aggiungo i valori senza duplicati
        For Each row As DataRow In ds.Tables("colonne").Rows
            If Not colonna_nome.Items.Contains(row.Item("nome").ToString) Then
                colonna_nome.Items.Add(row.Item("nome").ToString)
            End If
        Next

        Dim colonna_testo As New DataGridViewTextBoxColumn
        colonna_testo.HeaderText = "testo"

        DataGridView1.Columns.Add(colonna_nome)
        DataGridView1.Columns.Add(colonna_testo)
        DataGridView1.AutoGenerateColumns = False
        DataGridView1.DataSource = ds.Tables("colonne")
        DataGridView1.Columns(0).DataPropertyName = "nome"
        DataGridView1.Columns(1).DataPropertyName = "testo"

    End Sub

    'se conosco i dati
    Private Sub Button2_Click() Handles Button2.Click
        Dim colonna_nome As New DataGridViewComboBoxColumn
        colonna_nome.HeaderText = "nome"

        'genera l' errore
        colonna_nome.Items.Add("nome1 errore")

        colonna_nome.Items.Add("nome2")
        colonna_nome.Items.Add("nome3")
        colonna_nome.Items.Add("nome4")

        Dim colonna_testo As New DataGridViewTextBoxColumn
        colonna_testo.HeaderText = "testo"

        DataGridView1.Columns.Add(colonna_nome)
        DataGridView1.Columns.Add(colonna_testo)
        DataGridView1.AutoGenerateColumns = False
        DataGridView1.DataSource = ds.Tables("colonne")
        DataGridView1.Columns(0).DataPropertyName = "nome"
        DataGridView1.Columns(1).DataPropertyName = "testo"
    End Sub

    'gestisco l' errore
    Private Sub errore_DataGridView1(ByVal sender As Object, ByVal e As DataGridViewDataErrorEventArgs) Handles DataGridView1.DataError
        DataGridView1.Rows(e.RowIndex).ErrorText = "valore non valido"
        DataGridView1.Rows(e.RowIndex).SetValues("")
    End Sub

End Class