Il problema non e' se sia possibile leggere. Il problema e' se il lettore manda i dati verso il PC e in che modo: cioe', se c'e' una connessione, un'interfaccia fisica. Una volta che i dati viaggiano dalla smart card al PC puoi farci quello che vuoi, a patto di conoscere il formato dei dati, o quanto meno di scoprirlo per via empirica.
Per il linguaggio non credo ci siano grossi vincoli, basta che ti faccia accedere all'hardware. Sicuramente C. Quasi sicuramente Java. Su VB ho i miei grossi dubbi.
Tutto cmq dipende dal grado di astrazione a cui vedi il lettore di smart card.