A public header is a header that's used by lots of people publicly. It puts you at risk of being banned. A private header is one that only YOU use and it is safer, leading to no bans so far. You can get one either using a save extraction tool, a 9.2 3DS, or by buying one from somebody who has those tools and is willing to help (I'm one of those people).
You don't need headers for offline games, but you do need them for online games and I recommend that you do NOT use a public one.