A HM slave is a pokemon that you have on your team in-game so you dont have to teach HMs to your Pokemon. The main reasons being because most HM moves are not particularly great, and you can't delete an HM without a move deleter.
This keeps you from having less move slots to choose from. Let me give you an example (my HeartGold team):
- Infernape
- Luxray
- Espeon
- Snorlax
- Vaporeon
- Dragonite
Now lets say I dont want any of my 6 pokemon to learn Rock Smash but I need it to get through a cave. I would go out and catch a Pokemon like Sentret that you can catch at the start of the game and teach it Rock Smash. That way all my Pokemon can keep the moves I want them to have without one wasting a move slot on a HM.
In summary a HM slave is a Pokemon you keep on your team for no other reason but to teach HMs to so you dont waste move slots on your pokemon you are using.