To quote Wikipedia:
A web application framework is a
software framework that is designed to
support the development of dynamic
websites, web applications and web
services. The framework aims to
alleviate the overhead associated with
common activities performed in Web
development.
Basically, a web framework makes it easier for you to develop your application. Most sites have a common set of functionality (like handling sessions, data validation, etc) and a framework is something that prevents you from re-writing this each time you create a website.
LAMP (Linux, Apache, MySQL, PHP/Perl/Python) is a package that contains a web server (Apache). This is a piece of software that actually runs your web application. Frameworks are, in short, libraries that help you develop faster.
Flask is a microframework, which basically means that it is a framework with a small footprint (and meant for small sites, according to its docs).
Django & Ruby on Rails are also frameworks. Django and Flask are both frameworks for Python, but Rails is a framework for Ruby.
I would suggest that you build applications without the help of frameworks, and then jump into using frameworks (which require you to understand principles such as Model-View-Controller, ORM, and so forth).