As far as I know this is a "JDEList" term and you can find many posts about it using Virtual Table as the keywords.
It refers to a technique of defining a database query (usually but not necessarily in PRODDTA schema) that accomplishes one or more of the following:
1. does something a bit more complex then JDE can readily handle in a view
2. Allows JDE to access non JDE Tables
3. Overcomes performance issues thru feats of database sql legerdemain
So basically you create your DB Query and name it according to JDE standards - F55XXXX.
Column names in query similarly must have corresponding JDE field names with table prefix and valid alias names.
Data Types, decimals, dates, etc must be in JDE format.
Then in JDE Table Design Aid you define that "Virtual Table" as if you were going to have a real table with that name - but you never generate the table (or you define the table first in JDE, generate it, drop the table in the DB, and create the query in the DB - same thing).
As far as JDE is concerned its now a real table that you can query. Adding/Updating generally doesn't happen unless your Virtual Table is based off a real JDE table with just some filtering or some such.
Hope that answers the question.