When a client asks for an estimate ... is it best to give them a total amount or what it would take for each section?
Pieces. Always provide details in pieces. Always prioritize the pieces and always build the most important and valuable piece first.
Is it better/more common to give a range of hours/days or just a single number?
Better and more common have nothing to do with each other.
People don't retain much detail, so you can give all kinds of fancy ranges and probabilities and they're only remember one number. Which number they remember is essentially random, so it doesn't much matter what you say, they'll misinterpret it.
Since this varies, you have to know what they're going to remember. You have to know them and how the cope with uncertainty.
You're predicting the future. You cannot possibly know how long it will take.
Do you think most clients feel that if a programmer says it should take 50 hours that they should be billed for 50 hours?
That varies. Ask them.
If I say it would take 50 and it actually takes 60, do I tell them in advance that I'm going over on my estimate or just charge what was originally quoted?
If development is not a "dialog" you're doing it wrong. Since you're building in pieces, each piece is another exchange in that dialog.