Existen diferencias en cuanto a lo que ocupa lo que ocupan de memoria los objetos de datos, y tambien en cuanto a la performance.
Se dice (y es cierto) que cuando creas las conecciones via codigo todo se ejecuta mas rapido y seguro, ya que vos controlas todo lo que pasa, en cambio usando un objeto de datos, vos estas deribando el control a ese objeto y estas atado al comportamiento del mismo.
Se podria decir que ya VB y Windows, son lo suficiente imperfectos y problematicos como para encima agregar + problemas.
Yo en particular, ni uso controles data, ni uso codigo, opte por algo intermedio que son los DataEnvironment que a mi parecer son espectaculares, ya que en un solo objeto creas todas las conexiones que quieras y todas las consultas o comandos que quieras de modo que no necesitas recorrer el codigo para ver que es lo que te devuelve una consulta.
Pero bueno.. supongo que si sos nuevo en esto, atravezaras por los pantanos que hemos atravezado los que hace anos estamos en esto hasta aprender cosas nuevas.
De todos modos, a medida que conoces mas cosas, te das cuenta (por lo menos en VB es asi) que cada ves estas mas lejos de decir "Hey..yo soy experto en VB".
Ademas no te olvides que Microsoft tiene el don de hacer extremadamente dificil lo que otros hacen simple.
Suerte