Partial Answer:
Q1: Don't know, but the path to your asmx service is likely to have changed. - Check it is on localhost and check the service's port number: if you are running with Cassini the latter will have changed
Q2: Yes they can stand on their own. They are designed to expose methods across a network, it is even possible to call a service across the Internet, so on the same machine is no problem. You can and
should put this into a separate project from the website, and it is
preferable to pre-compile the service classes (thus also getting rid of the app-code folder).
Q3: I
much prefer WCF, it has greater flexibility a cleaner model and I found Federation easier. That said, the problems your are currently facing with asmx services you will probably face in WCF.
Q4: Absolutely not, although you are writing in .net, you could have written your service in Java. With forethought (about differences between primative types) you can even write a java service and consume it in .net (& vice versa) marshalling objects not only across application boundaries, but frameworks. The basic interaction is:
1) client opens channel to server
2) Client makes request of server (similar to a web browser requesting a page). The request is made using a standard called SOAP
3) The server replies with a SOAP response.
SOAP[
^] is an open standard. The "payload" of the message can contain serialized objects if you need them. WCF / Web services are
very powerful and they help in enforcing you to tier your code properly so database stuff doesn't bleed through to the UI etc. At my last place of work I designed the customer management system around [WCF - the principle is the same as asmx] web services, and that was for a bank. They also allow you to run multiple front ends through the same back-end code (we had WPF and ASP.NET clients), and they can talk to eachother (look up SOA - Service Oriented Architecture).
The web service paradigm is certainly worth investigating. I'd start with WCF, there are increasing few asmx resources around (it is very old, my first project used them 9 years ago) and in .net-land it has been largely superceded by WCF. You can always expose a asmx style endpoint if you wish, so you won't lose anything by doing this