QVDs are used to store the data from database / Datasource tables. A QVD can hold information of one DataSource table.
Generally QVDs are used to reduce the load on database servers. For example if you have a table called Product, which is been used in almost all Dashboards then for the first time the Customers information is fetched from the Datasource and save it in the QVD. After that the data in the QVD is used to load the Customer information in all Dashboards. This way we will reduce the load on database.
For example if we have 10 Dashboards, we are only hitting the database 1 time the other 9 times we are using QVD to load the data.
Also QVDs are the only way to implement the incremental loading in Qlikview.