For a virtual layer, use this query:
select p1.id1, p2.id2, st_difference ( p1.geometry, st_intersection ( p1.geometry, p2.geometry )) as geom from polygon1 as p1, polygon2 as p2 Red outline: Polygon layer 1; blue outline: polygon layer2, orange: output of the virtual layer = red polygons - blue polygons: 