Does anyone know how I can extract the holes in a polygon layer as a separate layer in QGIS?
An example could be a country with a number of lakes cut out of the polygon - I need the lakes.
This is fairly simple and you can do it all natively in QGIS (i.e.without exporting to PostGIS).
Step 2 is the key here. Step two creates a set of overlapping polygons, one of which represents your landmass with no holes and the others are your lakes. Step three kills the landmass polygon leaving just the lakes.
I vaguely remember a thread where somebody was asking how to de-doughnut polygons. You could use this same approach but instead of differencing your result with the original, simply dissolve the result, or do a spatial join and then select by attribute if dissolve is too crude... anyway, that's getting off-topic.