Покажу на примере стандартного виджета catalog_product_link:
Как Вы видите, для виджета указао класс PHP Magento\Catalog\Block\Product\Widget\Link, однако если Вы поищете этот класс в программном коде Magento 2, то не найдёте его. Этого класса не существует, это и есть пример virtualType:
Класс Magento\Catalog\Block\Product\Widget\Link на самом деле является классом Magento\Catalog\Block\Widget\Link, однако со своим особенным внедрением завимости: аргумент entityResource его конструктора имеет тип Magento\Catalog\Model\ResourceModel\Product.
Посмотрите на конструктор реального класса Magento\Catalog\Block\Widget\Link:
Как Вы видите, аргумент entityResource его конструктора имеет тип Magento\Catalog\Model\ResourceModel\AbstractResource.
Когда же Вы используете виртуальное имя Magento\Catalog\Block\Product\Widget\Link, то аргумент entityResource будет иметь тип Magento\Catalog\Model\ResourceModel\Product.
Дополнительное пояснение на StackExchange: http://magento.stackexchange.com/a/33140/18793