It all depends on the type of website you are building. All websites are not the same. Some will require the use of a specific kind of database interaction, some will require the use of a 3rd party API that may require a paid subscription. With all this in mind, you traditionally need to speak to a web developer about the features that your application will have and he or she will give you a quote based on those requirements. He or she would almost always take into consideration the time and cost it will take for them to deliver on your job.
No, you do not always have to pay in advance. Sometimes the nature of the project requires us to demand an initial commitment from you through a small advance payment. But this is more of a token of commitment than an actual charge. You would be liable for the complete payment only after the project is completed and you are happy with it.
It is beautiful and fast, and ideal for churning out small to medium size enterprise applications rapidly. Light-weight, yet powerful, fully equipped with useful development t