С top level window всё куда хуже.
Маски на момент версии 4.5.2 - однобитные (это означает, что антиалиайзинга не добьёшься). Там куча глюков и сильная просада производительности для непрямоугольных окон. Нельзя сделать часть окна одновременно 100% прозрачным и кликабельным в ту же дырку. И многое другое...
Под X11 для этого используется XShapeExtension, который использует однобитные маски. Т.е. Qt тут не причем.
Насчёт QPixmap vs. QImage...
QPixmap тяжелый ресурс и выделяется на стороне Xserver-а (X11) или ядра (win/GDI). QImage выделяется в памяти процесса.
К тому же в Qt4.x весь GUI рендеринг делается через double-buffering, который делается через QImage.
Т.е. иконка созданная в QPixmap-e в любом случае будет копироваться в QImage, а уже финальный QImage будет копироваться в окно виджета.