I typically use good, automotive trim-type screws in black oxide finish, size #8 x whatever length needed (should allow for 1/4" excess length after piercing headliner). These have a large diameter washer head on them and I get them at Fastenall, although they are an Auveco product. These have a nice finished look and the wide washer head works well in slotted brackets. They look like this:
To secure them, I run them through the headliner, and then put a 1" fender-type washer on the backside, and then a #8 spring nut, also from Auveco, like this:
It is not necessary to clip the spring nut to anything, although if you buy the correct ones, they will actually clip onto the washer, which makes the whole thing a bit easier to handle. The washers help distribute the weight of the mounted component and prevent damage to the headliner backside from the spring nuts. Do be very careful when holding the spring nuts while running the screw with an electric drill/driver...you can tear the absolute $h!t out of your fingers if the screw goes in at a slight angle and catches, as it will torque the spring nut and spin it. Those sharp edges will shred flesh.
I have also used these in lieu of the spring nuts...
...but they are a bit harder to hold and work with than the above method. I also use two per screw, stacked in a x-pattern, to ensure secure mounting. For whatever reason, these tend to "strip" easier than the spring nuts when tightening.
If you don't need a whole box of these items, which is how they are usually sold, simply check out a local auto body shop and they'll have them.