Web services and web design are 2 very different things. You can learn both, but typically people learn towards one direction or the other when becoming an expert in. Web services is all about low level programming and web design is all about client side design and layout. I would suggest focusing on one direction first and then move on to the other. Doing web design first would be easier than web services.
(The list of languages I list below is the order I suggest learning.)
For web design, HTML/XHTML, CSS, DOM, Javascript goes without saying. To be good in it, though, you need to learn not only the technology and languages, but good user interface design principles like accessibility, navigation, user behavior, etc. That part is too often overlooked but is essential in designing user-friendly web sites. These are the essentials.
Other technologies for web design: graphic design, Flash, PHP, Perl can be helpful and enrich your web designing skills, but are not essential for *good* web design. I would consider these secondary skills if you are going to pursue web design. Also, if you learn PHP, it's often used with MySQL (or some other database), so be sure to learn that too.
For web services, you're talking about having to learn 2 different parts to it: the web service itself, and the programming environment or platform the web service will be built in.
Since you have to know your programming platform before you can construct a working web service, I will talk about that first. And when talking about web application programming environments, there are 2 main ways you can go: the Microsoft way or the Java way.
The Microsoft way includes: ASP, .NET, C#.
The Java way includes: Java. You will also eventually need J2EE and maybe several other Java frameworks, but that can come later.
For the actual web services: XML, SOAP, WSDL, UDDI, HTTP.
As you can see there are TONS of things you can learn. Unless you can afford buying books for all these, there are TONS more very good resources online. Start there.