Hola Daggoth
Daggoth claro que todos tus programas siempre funcionaran en tu PC e incluso en la de tu amigo porque tienen el lenguaje instalado, recuerda que al instalar el VS éste pondra en el system32 de tu windows un sin fin de DLLs y OCXs que cualquier programa que hagas (dependiendo del control usado en tus ventanas y demas etc) llamara, buscara esos archivos que necesita para "dibujar" el objeto en la ventana y "ejecutar" todos sus eventos y demas procedimientos gracias a esas DLL y/ó OCX.
Tienes que empaquetar bien tu programa (el instalador) usa el Asistente de Empaquetado y Distribucion del Visual Studio, pero esté empaquetador del VS es algo inestable, te lo digo por experiencia, es mejor usar otros como Setup Factory o el Inno Setup, yo uso este ultimo, hago el instalador a pie, pero esto hace que alguna falla en el instalador sea casí nula.
Yo uso el Empaquetador del VS solo para saber las dependencias del programa, es decir, qué DLLs y OCX necesita el programa para funcionar, no es solo hacer el ejecutable el cual debe hacerse tambien. Luego de saber qué archivos necesita y depende el programa para funcionar, los busco y los meto en una subcarpeta del programa, la mayoria van a la carpeta de sistema del windows. La DLL de DAO o ADO deben registrarse en el registro de windows ya que aunque esten colocadas, no funcionaran.
Y tambien (en mi caso) uso el Virtual PC de Microsoft donde tengo instalado en una PC virtual un Windows Virgen, donde pruebo el instalador hecho y evaluar si en el proceso de instalación se produce algun error, o si luego de la instalación, evaluar si en la ejecución del programa y sus tareas se llega a producir algun error, esto abarca tanto avisos de error, como el que se llame a un procedimiento o ejecución de algo que al hacerlo, no se active, como por ejemplo, llamar a un reporte o alguna consulta de datos y ver que no sucede nada, casi siempre todo esto es debido a la falta de algun archivo que el programa necesita para saber lo que se le está pidiendo hacer, lo cual es tu caso y es el pan de cada día en todo esto.
En resumen es eso, tu programa al cargarse a memoria busca en la carpeta de sistema (del sistema) los archivos que necesita para funcionar, y al no conseguirlos produce sus respectivas fallas, en tu equipo esto nunca sucedera porque el Visual Studio colocó en tu PC todo el montoneron de librerias que coloca para funcionar y para que funcione todo control y referencias con e o lasl que desees trabajar.