ZBrush references materials by their index number. (You can see that number next to the material name at the top of the Material palette.) There are several reasons for this but one example is that it keeps your model file size a lot smaller. Rather than storing every setting of every material you use as part of the ZTL, it only stores the index numbers.
When you load a material, it replaces the currently selected material. So if you want to load multiple materials you need to select a different slot for each one. Otherwise, the newest will overwrite the last one.
If you have adjusted the properties of the material(s) you’re using on your model you will need to save the material in addition to the model. Then when you open the model again you will need to load your various materials into the same slots in the Material palette that they had been in before. Or you can save your work using the ZPR format (File > Save Project) instead of the ZTL format. This saves everything, including the various materials and their settings. Of course, it will be a much larger file than the ZTL!
If you don’t remember which material slot you used for a given part of your model, drag from the Material thumbnail onto that spot on the model. The cursor becomes a Picker, selecting the correct material slot. Now just load the material that goes there.
To copy a material, select it. Below the Material palette’s various thumbnails you’ll see CopyMat. Click that to copy the material. Now select another material and press PasteMat. Done! Alternatively, you can copy specific shader channels within the material. At the top of the Material > Modifiers there are CopySH and PasteSH. These affect the currently selected channel (S1, S2, S3 or S4). This lets you mix and match shader properties between various materials. Keep in mind that some material shaders (such as for the fibers materials) will only work in the S1 channel.
Hope that helps.