Both.
- There is a file called tag-mapping.xml in the mapfile writer that determines what goes into your map file at what level. By default, the built-in file is being used, but you can change this on the command line for osmosis.
- Then there is the rendertheme, usually the built-in osmarender-like rendertheme, that determines what of is shown on the map (and in what form)
Obviously (or maybe not so obviously as this seems to have created a bit of confusion) the rendertheme can only show what has been included in the map file by your map generation process. So it you just wanted to change the appearance of data (eg. make city names appear in red), you can just change the rendertheme. But if you want to show certain detail at a lower zoom level, you often will have to change your tag-mapping.xml file first so that this data is included in the map on a lower zoomlevel. (There is no warning if you try to show something that is not there with a changed rendertheme: it cannot possibly know that this is because of a mismatch with the the tag-mapping file or because the features requested just do not exist at that level).
A third factor that plays a sometimes annoying role is the label placement algorithm that removes labels that overlap, but sometimes removes labels that you consider more important in favour of those you consider less important. Happens often with capital cities, it is mainly a problem of the tagging scheme in OSM which does not really have very good distinctions in city-importance levels (OSM is very western centric here, but works less well for Asia).
tl;dr : check the tag-mapping.xml file if your features do not show up.
HTH
Ludwig