Icon sets have a list of Gtk::IconSource, which they use as base icons for rendering icons in different states and sizes.
Icons are scaled, made to look insensitive, etc. in gtk_icon_set_render_icon(), but Gtk::IconSet needs base images to work with. The base images and when to use them are described by a Gtk::IconSource.
This function copies source , so you can reuse the same source immediately without affecting the icon set.
An example of when you'd use this function: a web browser's "Back to Previous Page" icon might point in a different direction in Hebrew and in English; it might look different when insensitive; and it might change size depending on toolbar mode (small/large icons). So a single icon set would contain all those variants of the icon, and you might add a separate source for each one.
You should nearly always add a "default" icon source with all fields wildcarded, which will be used as a fallback if no more specific source matches. Gtk::IconSet always prefers more specific icon sources to more generic icon sources. The order in which you add the sources to the icon set does not matter.
gtk_icon_set_new_from_pixbuf() creates a new icon set with a default icon source based on the given pixbuf.