A skinflint is someone who only shops at bargain stores, never orders dessert, and in general hates spending money. It's not a nice word, so if you're trying to compliment someone, better to call them "thrifty" or "frugal."
A flint is a kind of rock that was used in the olden days to start a fire. If you didn't want to buy a new flint, you'd use an old one over and over again, "skinning" it — that is, wearing it down until it's as thin as skin. So someone who did that would be called a skinflint. It's another way of saying that someone will try to squeeze a penny out of anything.