The difference is that you have your server-side .NET objects (e.g. image, textbox, upload, login tags etc) create the HTML for you, and the code-behind wires up all the processing stuff. You can have the code all in one aspx page, but it's better to have separate code files (.vb / .cs) to the aspx pages so you can easily separate the UI design from the implementation. It's all pretty much the same as if you have all your vb code stuffed at the top of your asp file before your HTML is rendered at the last moment. The magic is when you use the .NET tags, (e.g. in the <asp:Login> tag, and datagrids/gridviews outputting tables for you with editable rows etc, all in about 3 lines of code). The more you use it the more you'll find out how easier it will make things. The good thing about letting it generate the HTML for you is that it uses best practise ways of generating standards-compatible HTML, and you can even convert a HTML 1.1 app into an XHTML app in one line of code (if you wanted to). Also ascx (custom controls) are excellent for code-reuse.
Be warned that you will have lots of headaches while learning it, but you'll always find that if you are hitting your head against the wall over a problem for about 2 hours and have not found a solution for what you're doing, then you're not using the right method. Remember - there is always an easier way of doing what you want out there - you've just got to find it!
I wish I went on a course to learn .NET - I had to find out how it all worked the hard way using only IIS6, ASP.NET 1.0 framework, notepad and a screwdriver! Then after a month, my boss bought me a book on ASP.NET 2.0 C#, and eventually Visual Web Developer LOL.
Anyway, I wish I could be of more help, but I probably work for your competitor, so I'll say no more other than "good luck"!