You can use the CellContentClick event. Note that the .Value property will always return false, so use the .GetEditedFormattedValue property to determine whether the checkbox is ticked or not. For example ...
Private Sub DataGridView1_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
Dim b As Boolean
If e.ColumnIndex = 0 Then
b = Convert.ToBoolean(Me.DataGridView1.CurrentCell.GetEditedFormattedValue(e.RowIndex, DataGridViewDataErrorContexts.CurrentCellChange))
If b Then
Me.DataGridView1.CurrentRow.Cells(1).ReadOnly = True
Else
Me.DataGridView1.CurrentRow.Cells(1).ReadOnly = False
End If
End If
End Sub