Welche Sprache du für den PC nimmst wird davon abhängen welche du besser kannst.
Was du für die Kontroller nimmst wird davon abhängen welchen Kompiler du zur Verfügung hast.
Du wertest die empfangenen Zeichen aus, es gibt fertige UART-Routinen.
Welche Schnittstelle unter den Kontroller entscheidet sich wie weit sie auseinander liegen, auf der gleichen Platine oder zumindest sehr nahe, bietet sich I2C an.