A bakery should be able to refuse to support an activity or event of which they do not approve. If a gay man is marrying a woman (perfectly OK with Christians), they should not be able to refuse service just because the customer is gay. That's discrimination that has been deemed illegal. Refusing to cater (provide a cake for) a wedding between two men should be perfectly legal because private persons have a right of (dis)association.
Businesses no longer have that right because it was abused. They are not legally allowed to refuse to do business with people based on certain characteristics because those refusals were used in an organized manner to punish and torment people for who they are (race, sexual-orientation) or what they believe (religion). Imagine, for instance, living in a town where the grocery stores refused to do business with you because of the colour of your skin. I doubt you'd think it was fair for them to try and starve you out of town. On the flip side, those laws also protect businesses, because it no longer makes sense for the current customers of a business to boycott it just because it does business with people with the "wrong" coloured skin. Every business is required by law to ignore certain differences, so if they shut down one with a boycott, any business that replaces it will still have to do business with those people anyway.
Even given that, there are things that a baker can refuse to do. For instance, it is my understanding that the baker can refuse to decorate a cake with a same-sex wedding theme. However, they can't refuse to sell a generic wedding cake to someone just because the person is gay.