Alex,
libSDL and libSDL2 are low-level multi-media libraries designed for games. Those libraries are best suited for basic pixel blitting, some lines and rect in a cross platform way. Both libraries allows you to use a custom software rendering or create a window in a cross-platform way. As for Cairo, that's a full featured vector graphics library, practically designed for SVG rendering. So, those two libraries cannot be compared, but I think that Cairo can be used to render into a texture and then use SDL to display it on screen. Actually, I don't have any experience with Cairo.
As for the VM, I was looking at his Unix platform module, suspecting that the tearing and flickering was caused by using just XLib for blitting the main pharo window after Milton told that those issues aren't seen in Windows. If we add to the mix some always buggy AMD drivers, it seems that the solution goes by rewriting the display to uses OpenGL for blitting the main window, with VSync enabled, or using a separate native window for OpenGL graphics.
By the way, what I found most strange about display VM code is that there's support for creating an OpenGL context already in place, with an accompanying -glxdebug flag, for verbose output. When I tried that option, I didn't get any output, so I could assume that these is not used for fast blitting under Linux.
As for SDL2, it provides all the required facilities for a VM display module, without having to deal with X11 or platform specifics. Window creation, multiple OpenGL context creation, clipboard handling, input support, multi-threading, sound support, drag and drop. That version of SDL had a strong contribution by Valve, they needed something to start pushing heavily Linux, even the latest versions of Steam uses it.