The TVirtualQuery component is used to retrieve data with SQL queries from sources, that are any TDataSet descendants. Due to this, you can build complex SQL queries to in-memory data (data sources are TVirtualTable, TVirtualDataSet or another TVirtualQuery) or to data stored in different RDBMS'es (data sources can be TUniQuery, TOraQuery, TMSQuery, TMyQuery, etc. at the same time).
The TVirtualTable component represents an in-memory data storage that does not have linked data files. TVirtualTable allows to load data from a XML or CSV file, or from an existing dataset, and then wraps the data in the usual way, as in any TDataSet descendant.
The TVirtualDataSet component is data wrapper that doesn't store data in memory and interacts with data using event handlers.
It allows to represent arbitrary data (arrays, lists, objects, etc.) as TDataSet descendants and link it with any DB-aware components to display data or modify it.