"They say the best things in life are free, but you can tell that to the birds and bees, I want money, thats what I want" - Money, The Flying Lizards.
Should you charge for service? The simple answer is: it depends. If you are providing some sort of field service or support for a hardware product or complex software product I can't imagine you not charging for it. The option would be to charge so much for the original product that no one would buy it.
The issue comes when you are talking about a low cost or medium cost piece of software. A lot of companies charge somewhere around 20-25% of the purchase price for "maintenance". Basically, this is a highly discounted price for new major versions of the product. While phone support is sometimes offered, it usually consists of someone with little or no knowledge of the product (we used to call them "first tier" support) who has a knowledge base (often the same one that is online) that they search through using the keywords you give them. More and more frequently support is now user forums and knowledge base articles available online. Frankly a decent Google search will turn up more interesting help on a particular problem.
That is not to say that support could not be a profit center. But if you are going to charge for it, then ensure that what you are providing goes way beyond what someone could find on the web. Make your developers available, at least through forums or email. Have knowledgeable people as your "first tier" support. They should be able to handle most questions on the first call. If you aren't willing or incapable of providing that level (for whatever reason that might be) don't annoy your customers by charging them for half-baked answers.