Sí, claro que hay diferencia, pero conociendo c se puede batallar con ambos al mismo tiempo, c ayuda a alejarse un poco del nivel hardware. Por ejemplo, cuando leo archivos de la memoria sd, no me fijo en que protocolo usa ni a qué voltaje opera el puerto del cubo, solo le digo, léeme este archivo 
Si, depende del hardware , de si cuentas con un sistema operativo , de si dicho sistema operativo tiene además algún driver para accesar a la memoria SD, etc. En esos casos con usar las clásicas funciones fopen, fread, fwrite, etc alcanza.
Pero siempre hay que conocer el hardware, al final es lo que limita a uno para poder hacer programas optimizados.
Mi respuesta apuntaba más a algún hardware embebido, donde tengas o no un OS, pero debas conocer a fondo todo el hardware para hacerlo andar bien.
