I'm going to describe the practices that have best worked for me. Others might have better ideas that could work for you.
First Step: Plan
Write down the different functionality you want to have in the website. Go through the user's experience, and add or subtract features based on relevance and usability. Make sure you plan out what pages you want to include, and what functionality you want to have on each page individually. Keep in mind why people want to go to your website versus anyone else's. Try to give the user something original.
Don't worry about building a database or any programming just yet. Having an ugly or inefficient website will drive users away a lot sooner than having a poorly coded back-end. The start is simply designing the layout and aesthetics.
Second Step: Graphic Guide
Draft a graphical template of what you want it to look like, where you want your navigation, etc. I recommend using either Photoshop or Gimp. Researching usability studies and the such will help you determine what are the best practices. Also, looking at websites you commonly visit with a critical mindset will help you figure out what features you want to include. Make sure you always remember to keep the clutter down. Google is a perfect example of providing functionality without too much stuff on the page. Yahoo is a great example of what not to do (In my humble opinion).
Your graphical draft should cover all of the basic areas of your website; banner design / location, navigation design / location, login location (If you're including that), content area design, and whatever else you decide is necessary.
Third Step: Start Programming
Ensure that the HTML has cross-browser compatibility and SEO, getting it w3c validated wouldn't hurt either (validator.w3.org). Once it all looks slick, start the PHP.
Fourth Step: PHP/MySQL Programming
Up to this point, you could do everything on your local machine. Aside from downloading software (EasyPHP for example), you'll need a server to program the PHP. A great host to use that has always been a great hosting solution is HostMonster.com. Cheap great hosting. Start building your database tables, using your foresight at exactly what you're going to need stored in the database. Yes, you will store absolutely everything in the database, from long text reviews to URL of images - assuming you want a dynamic website.
Make your homepage complete with all of the PHP that you want to include, and make sure it looks like a finished product. Then use that page as a template for the rest of the pages you want to build. Building each individual page in HTML first, then inserting all of the PHP is a pain, as you have to go through each page and insert the same PHP code.
As for your question to switching hosts, it isn't that difficult but fatal problems may occur. Backup your SQL database locally, register your new host, upload your files and database and make sure it all runs smoothly before terminating your service with the first host.
Fifth Step: User Testing
Giving your website in the hands of people who haven't participated in the design process will help you assess what areas need to be improved on, or what features to add / subtract. Beta testing for web design is just as crucial as for programs. Make sure to have a diverse population of interests and systems. A different version of Firefox may not display the information in the same way as your version of Firefox, for example.
A Few Tips
Consistency is the key. As your background in coding, you might already know this - but having a radically different background image for each page is an instant killer. Keep your navigation in the same area as well as in the same format.
Create a memorable site-map. Having users completely lost in your website is hazardous. Allow for link visited and active colors to be the same so users know where they have been. More information on this can be obtained from usability research.
Use either high graphics / low information, or low graphics / high information. Trying to combine both methods usually ends in disaster.
Never have the users scroll to the left or right. People aren't used to it, and it makes your website a lot harder to use if you crop important information. Using a percentage width would fix that problem.
I hope all of this helps you. If you need more information on a certain subject, let me know.