The Lightning Component framework is a component-based framework.
- As building blocks of an app, components encapsulate HTML, JavaScript, and CSS, while interacting via events. Lightning components are client-side centric, making them more dynamic and mobile friendly.
- Contrastingly, Visualforce components are page-centric and rely heavily on server calls. Visualforce facilitates the delivery of template-driven web pages and email messages, making it suitable for developers who wish to maintain greater control over the life cycle of the request.
So, in a nutshell, you will use lightning for building apps that are compatible across multiple devices. It forces you to follow event-driven patterns and the component-based approach so that, in the future, it will allow the consumer of a component to focus on building their app, while the component author can innovate and make changes without breaking consumers.