Si tu commence le C# je te conseille de le faire avec le Coach C# que voici :
http://msdn.microsoft.com/fr-fr/vcsharp/msdn.coachcsharp.aspx
Le framework... et bien en termes vulgaires, c'est une espèces de couche entre ton code et l'application qui va te permettre de choisir n'importe quel language de programmation tout en bénéficiant des mêmes outils indépendamment du langage dans lequel ceux-ci ont été codés.
En image :
http://www.cogenius.net/img/framework.jpg
En vert les langages de programmations utilisables avec le framework .NET, en rouge les outils principaux (il y en a beaucoup plus) fournit par le framework, en bleu c'est l'application (en gros ^^), en noir ce sont les différents types d'exécutions/utilisations.
Ainsi si tu code une API (librairie de fonctions) en C++ sous le framework .NET, tu pourras l'utiliser sans problèmes dans une applications codées en C# toujours sous le framework .NET, etc etc pour chaque langage du framework .NET.
Le framework .NET contient aussi tout une série d'outils te permettant de simplifier tes programmes, par exemple pour faire un logiciel FTP il y a des classes toutes faites qui te permette de te connecter à un serveur FTP, d'y envoyer un fichier, ... autre exemple si tu veux écrire dans un fichier ou te connecter à une base de donnée, d'autres outils te sont fournis pour te simplifier le travail il te reste à leur passer les bons paramètres.
Si tu fait du C# il n'y a pas d'autres choix que de le faire tourner avec le framework .NET vu qu'il a été introduit avec celui-ci, aussi le framework .NET doit donc être installé chez les clients (le framework .NET est dans les mises à jour de windows XP, et est automatiquement fourni avec Windows Vista et Windows Seven).
Les intérets de l'Asp.NET par rapport au PHP... premièrement je dirais que tu as une approche totalement orientée objet contrairement au PHP qui était à la base un langage procédural, et qui tend à faire un code très "sale". Un autre avantage c'est qu'avec l'Asp.NET tu peux choisir ton langage de programmation, que ce soit le C++, le C#, le VB.NET ou autre tant qu'il fait partie du framework .NET.
Le dernier c'est que beaucoup plus d'outils sont mis à dispositions de base avec l'Asp.NET (genre des tableaux bien plus faciles à gérer, ...) tandis qu'en PHP il faut tout faire un peu de façon brutale à la main si j'ose dire.
Personnellement je suis adepte des deux et j'ai plus tendance à coder en PHP vu le prix des hébergements Asp.NET, après tout dépends du client, si celui-ci as un serveur IIS et une base de données Microsoft SQL Server c'est bien mieux de lui faire son application web en Asp.NET.
Si à l'inverse il à un serveur tournant sous Linux avec Apache, PHP et MySQL tu sera plus à l'aise avec le PHP.
Juste pour savoir :
Winform te permet en gros de créer une ihm mais cette ihm est destinée à quel support? web ou logiciel ?
Si c'est les 2, comment ça fonctionne pour une ihm en web ? tu le couple a CSS ?
A mon avis, il y a plusieurs métiers dans ce que tu veux faire ... Bricoler dans tout, c'est facile, mais pour t'y lancer de façon professionnel, commence par choisir ce que tu veux faire exactement, car pour être performant, il faudra sans nulle doute te spécialiser
les winforms sont les fenetres que tu vois dans les logiciels client comme word ou autre.