Actually, It is up to you, whether you want to buy domain for you client or not. Mostly clients don't know about how to buy a domain or space on internet to put there site on. You can give them choice, if they host themselves, you will charge less, if buy domain for them, you can charge more.
Secondly, any hosting company that give better customer support will be the best choice. You are not limited to select any specific hosting company.
Thirdly, The amount of money you are going charge also depend or the project you take. As recommendation, If you don't know how much time the project will take to build, take money hourly. I mean if more time, take more money, if less time less money. If you know how much time the project will take, charge fixed. I mostly take database projects up then 300$