Jeśli chodzi o warstwy rastrowe, to w ten sposób nie poznasz API QGISa. QGIS jest generalnie wektorowy i większość operacji rastrowych wykonuje nie natywnie na wczytanych warstwach, tylko bezpośrednio na źródłowych plikach za pomocą API GDALa. Tak działa na przykład Kalkulator Rastrów (ten w menu Raster). Krótko mówiąc: w konsoli QGISa możesz dokładnie tak samo jak w dowolnej innej konsoli Pythona: załadować moduł osgeo.gdal, wczytać pliki, przetworzyć, zapisać, ale sam QGIS nie będzie miał z tym nic do czynienia. Jeśli Cię to interesuje, przykładów szukaj na stronach GDALa. Zamiast GDALa można użyć np. R, ale to nic nie zmieni w kwestii udziału QGISa.
Zaś jeśli chodzi o odejmowanie warstw wektorowych, czyli wycięcie z wieloboków warstwy A wieloboków z warstwy B, to jak najbardziej wykorzystasz API QGISa. Musisz dobrać się do tych dwóch warstw i iterować po wszystkich obiektach, próbując odjąć każdy obiekt z warstwy A od każdego z warstwy B. Oczywiście przy dużej liczbie obiektów, z których większość oczywiście na siebie nie zachodzi, oznacza to kupę daremnych pętli w Pythonie, co może być dość powolne.
Zacznij od Cookbooka stąd:
http://www.quantum-gis.pl/czytelnia/programowanie . Nie pamiętam, czy tam jest napisane, jak się dobrać do aktualnie załadowanych warstw. Sprawa jest dość prosta. Do samego interfejsu QGISa dobierasz się tak:
qgis.utils.iface
do płótna mapy tak:
qgis.utils.iface.mapCanvas()
a np. do bieżącej warstwy tak:
qgis.utils.iface.mapCanvas().currentLayer()
Jak obsłużyć te obiekty, powie Ci już dokumentacja API i rozdziały Loading Vector layers, Using vector layers i tym podobne z Cookbooka.