1. A servlet is a complied java program that runs on a web server.
Often (maybe usually) it will generate a web page for all to see. A
JSP (Javaserver page) is a web page with embedded java code (or a java
file with embedded HTML). THe first time the page is accessed, it is
compiled into a servlet.
2. A web server handles HTTP requests from a browser and delivers web
content to it. An application server is the "business end" of some
sort of application (let's say a payroll system) where it is accessed
from some thin client. A web server may be used as an application
server if the application is a web application. Or, if you view
reading web pages as an application, I guess a web server can be an
application server, too. Hope that isn't too confusing.