on b): yes, but do you do it on client time? I try not to, as it causes uncertainty in deliverables, unless the client is happy with experimenting. I learn/expand in my own time on "fun" projects :)
As long as the customer is satisfied with the overall quality, cost and timeliness of the product, you've met your obligations as a business. Why does the "profit" always have to be only cash? learned skills are a form of capital reinvestment that the customers pay for just like they pay you a profit margin to do the work.