In the simplest of explanations:
Web Designer creates the front-end
Web Programmer creates the back-end
However, in my opinion a Web Designer needs to know a little about programming to be able to design properly. Designing a website isn't all about the "looks", it's also about functionality. A designer needs to know how the site is going to navigate, the structure of the pages and what types of "features" the page is going to need. If the designer doesn't know these things, they may create a look that is great alone but once you work in the back-end processes (the power of the website) if the design doesn't work well with it, you haven't succeeded at meeting your goal of a well designed website.
I'm not saying you need to know how to code a database, but you should understand how best to set up navigation, what modules or sections are going to be necessary on the page and what the programmer is going to require to show up within the design. That way, when you both finish, they mesh well together with little re-working necessary.