The #LVM_GETHEADER message simply retrieves the handle of the header control which is attached to the ListIcon gadget.
The column headings you see in a ListIcon gadget are actually part of a Windows header control which has been bound to the ListIcon. You can use header controls almost anywhere, not just with ListIcons.
Anyhow, the number of columns in a ListIcon is simply the number of items in the attached header control.
I may look like a mule, but I'm not a complete ass.