This week's book giveaway is in the Reactive Progamming forum. We're giving away four copies of Reactive Streams in Java: Concurrency with RxJava, Reactor, and Akka Streams and have Adam Davis on-line! See this thread for details.
In a nutshell: A webserver serves up static HTML files. An appserver runs an application to build the HTML dynamically.
They're blurred because programs that are traditionally referred to as webservers, like Apache HTTPD, can serve up dynamic content via the common gateway interface (CGI), or with modules like mod_php or mod_perl.
Tomcat, which is an app server, can also function as a standalone webserver. Not all servlet engines can do this. Some will only function behind a webserver.
Under certain circumstances, it makes sense to combine Apache HTTPD and Tomcat. Under this configuration, HTTPD serves up the static content, handles all SSL issues, and passes all servlet/JSP requests to tomcat.