Je vais résumer mon point de vue vite fait parce que je n'ai guère envie de citer tout le monde. (NOTE: j'utilise Ubuntu pour parler d'Ubuntu ou GNU/Linux pour parler de GNU/Linux en général)
Quand je dis écrire une ligne de code, je veux dire devoir faire autre chose que copier-coller. Et à part le matos où c'est souvent «nécessaire» (c'est plus rapide de copier-coller une commande qui retourne exactement le bon résultat que de dire «va ici, clic sur ça, puis sur ça, et à gauche il y a l'info»), mais pas tout le temps (Ubuntu propose très très souvent les pilotes privateurs à l'utilisateur sans passer par la ligne de commande, et les libres sont pour la très grande majorité déjà installés).
En résumé:
* Ubuntu: plus simple, plus rapide mais plus de chance d'avoir des problèmes de matos
* Windows: tout le monde connait, moins de chance d'avoir des problèmes de matos, mais plus chiant
MAIS, certains périphériques ne fonctionne pas avec des versions récentes de Windows mais toujours avec GNU/Linux: pilotes libres => peuvent être recompilés pour une version plus récente d'une distribution GNU/Linux, pilotes privateurs => quand matériel trop vieux flemme de refaire des pilotes + viendez acheter mon nouveau matériel => reste avec vieille version ou balance ton matériel encore fonctionnel.
J'ai une imprimante HP Deskjet 3325, elle a toujours fonctionner sans rien installer sous Ubuntu (il me suffit de choisir la marque puis le modèle dans une fenêtre). Sous Windows 7 je ne pouvais pas l'utiliser. L'obsolescence programmée, toussa…
Pour finir si j'installe Ubuntu tout fonctionne de base, j'ai juste à installer le pilote privateur qu'Ubuntu me propose pour avoir les meilleures performances.
On est d'accord que le point faible de GNU/Linux est le support du matériel mais c'est pas de sa faute, faut essayer de deviner comment le périphérique fonctionne, ce qui est loin d'être simple mais qui est surtout très long et très chiant. Si les constructeurs donnaient les spécifications de leur matériel (c'est à dire comment le pilote communique avec le périphérique entre autres choses). J'ai de l'espoir avec
Steam sous Linux officialisé (libre «Ubuntu», faut un peu bidouiller pour les autres distributions).
Enfin, pour ce qui est de la terminologie:
Linux: noyau, logiciel qui fait la passerelle entre le matériel et les logiciels. Il a besoin des pilotes pour échanger des informations avec le matériel et/ou le contrôler. C'est un énorme projet car il est disponible sur des tas d'architectures différentes (32 bits, 64 bits, ARM, ARM 64 bits, PowerPC, mips, mipsel, sparc…), on l'utilise sur des supercalculateurs, et il contient aussi tous les pilotes libres distribués avec le noyau (c'est à dire tous ceux qui sont stables en gros).
GNU: un certain nombre de briques de base du système. Le premier truc qui est démarré après le noyau c'est des outils GNU, ou des logiciels qui se basent dessus, si les binaires de tes logiciels tournent sur le noyau Linux c'est grâce à des outils GNU, l'écrasante majorité de ces logiciels sont compilés avec GCC qui fait partie du projet GNU. Même quand ton système est démarré, il y a
pleins d'outils GNU qui sont plus ou moins cachés. Bash par exemple, mais GNOME est aussi listé dedans, et pleins d'autres trucs dont je n'ai pas/j'ignore l'utilité.
Distribution GNU/Linux: ensemble cohérent d'applications dont font partie GNU et Linux. Chaque distribution a ses dépôts, avec certaines version d'un logiciel, et du coup on doit garder telle version de telle bibliothèque pour que tel logiciel fonctionne, ce sont les dépendances. Certains logiciels sont modifiés pour adapter le logiciel à la distribution (ex: Steam ne fonctionne que sous Ubuntu, mais il a pu être adapter pour Arch Linux (pas testé)). Du coup on a en général le même niveau de «vieillesse» pour les logiciel d'un dépôt. La distribution peut être mise à jour en continu sans réinstallation (Arch Linux) ou par mise à niveau (Ubuntu). Certains logiciels diffèrent en fonction des distributions, la plupart sont cachés (exception: le gestionnaire de paquet). Il n'y a pas d'installateur qui fonctionne sous toutes les distributions, le truc qui marche le mieux c'est une archive que l'on extrait avec un script Bash qui lance l'exécutable (un peu comme certains logiciels sous Windows d'ailleurs), mais il est préférable d'utiliser la version des dépôts.
Android: c'est un système d'exploitation basé une version Linux modifiée par Google, et pas avec les outils GNU (il est néanmoins possible de les installer si on l'a «rooté»). Du coup il n'est pas facilement possible d'utiliser des logiciels disponibles sur GNU/Linux (surtout qu'il y a beaucoup de restrictions au niveau des possibilités de développement et d'installation d'applications, mais ce qui fait aussi qu'il n'est pas trop mal sécurisé). Le développement d'Android se passe «en secret», et ensuite chaque version est publiée sous licence libre.
Du coup Android (basé sur le noyau Linux) ≠ GNU/Linux, Linux (le noyau) ≠ GNU/Linux (abus de langage, c'est une énorme imposture, surtout que GNU existait déjà avant Linux et que Linux aurait été vite oublié si Linus Torvalds n'avait pas eu de logiciels à faire tourner dessus).
P.-S.: Encore une fois, je t'encourage à vraiment utiliser et à tester des choses sur GNU/Linux si tu veux faire une idée plus précise de ce que je viens de te raconter, et bien plus encore. Contrairement à Windows, il est beaucoup plus facile de comprendre comment fonctionne le système, et beaucoup plus de documentation et d'écrits à ce propos. C'est un peu comme le Bépo (la seconde révolution dans ma vie après GNU/Linux), je crois que je n'aurais jamais imaginé que ça me changerait la vie à ce point.