It's a lose-lose situation. In a private business you should be allowed to refuse service, with the only real effect being getting bad reviews for it. if you're an asshole to enough people you'll throw your own business under the bus.
In theory sure, but in reality it doesn't always work out that way, the market doesn't end up being a natural correction for discrimination, often times it actually ends up re-enforcing it see: the segregated businesses of the south or red-lining.
So to address that you get laws like the Civil Rights Act that made it illegal to discriminate or deny service based on gender, race, or nationality. I'm personally in the camp that sexuality should be in that number, see the Colorado bakery nonsense.
But yeah, if you want to tell me to kick rocks because you found out I'm pro-choice and pro gun control, sure, go for it, political speech isn't a protected class and there doesn't seem to be an apparent need for it.