dim Conexion As ADODB.Connection
dim RsRegistro As ADODB.Recordset
Crea los objetos Connection y Recordset, pero nos los inicializa.
Para instanciarlos, se debe poner la sentencia
Set Conexion= New ADODB.Connection
En cambio cuando ponés
Dim Conexion As New ADODB.Connection
Se da a entender que no sólo estas creando los objetos sino que los estás instanciando o inicializando
Al fin de cuentas ambas sintaxis hacen lo mismo.
Por una cuestión de convenciones en programación, se ha inculcado durante años, que los objetor deben ser creados e instanciados en sentencias distintas.
Al comienzo de la función o Procedimiento se crea el objeto y una línea antes de ser utilizado, es instanciado.POr lo que se da una idea que entre una declaración y una inicialización, pueden haber decenas de líneas de código.
Quienes tiene años en la programación han dejado de lado esta convención purista y crean los objetos con el modificados New para instanciarlo en el mismo acto. De esa manera sólo se evita código y se declara únicamente cuando en necesario utilizarlo.
Si ves bien los ejemplos de Microsoft, crea todos los objetos al principio (se reserva memoria en la Pila de la aplicación) y los instancia en la mitad del código poniendo en el medio rutinas de manejo de errores, que a la postre ocasionan que el flujo del programa salga de la función sin siquiera instanciar el objeto. La pregunta inevitable es ¿Para que se crearon?.
En fin son cuestiones de programación nunca bien resueltos, pero por convención , usos y costumbre se sigue haciendo.