meta_window_set_type should be public
Allowing code from inside mutter to create a child process and delegate on it some of its tasks is something very useful, because code inside the compositor must share the main loop with it, which means that complex tasks can produce stalls in the refresh of the desktop. Also, having to create an extension for any privileged graphical element is an stopper for a lot of programmers who already know GTK+ but doesn't know Clutter.
Under X11 there is no problem doing this, because any program has full control over their windows, but under Wayland it is a different story: a program can't neither force their window to be kept at the top (like a docker program does) or at the bottom (like a program for desktop icons does), nor hide it from the list of windows. This means that it is not possible for a "classic", non-priviledged program, to fulfill these tasks, and it can be done only from code inside mutter (like a gnome-shell extension). Although there are some ugly ways and quirks for an extension to give that kind of "superpowers" to a window, like using meta_window_stick() or meta_window_lower(). Unfortunately, there is no safe way of making a window disappear from the task list, except by monkey-patching some methods inside Gnome Shell (as demonstrated by desktop-icons-ng), which is a very brittle process.