Windows verzeiht dir eher ineffizientes Programmieren, da du Unmengen RAM hast. Ich sehe hier ständig Programme die sehr verschwenderisch mit dem RAM umgehen. Manchmal macht es nichts, aber gerade z.B. bei Ethernet (wo die Lib schon viel RAM braucht) führt das auch schnell zum Absturz.
Auf dem PC kommt außerdem dazu, dass man bei Sprachen die in einer Virtual Machine oder einem Interpreter laufen meistens auf die Finger geklopft bekommt wenn zur Laufzeit was nicht passt. C/C++ Programme laufen dagegen einfach weiter. Aber selbst in Visual C++ bekommst zu bei manchen Sachen Laufzeit Fehler von der IDE, während du auf dem µC nur merkst dass er nicht macht was du willst.
Meistens fehlende Debug-Möglichkeiten machen die Entwicklung auch schwieriger. Es gibt zwar inzwischen auch im Embedded-Bereich richtige Debugger (sogar für den Arduino), aber auf dem PC hat man trotzdem mehr Überblick was das Programm gerade macht.