I do all three of the above to be honest. Let me walk you through how I setup a solution to be built...
1. I make a layout with a tabbed interface called "Elements" and name the tabs Icons, Buttons, Gradients, Custom Images. On this layout I will put copies of any icon, button, or other graphic I use in the solution, just in case I need to use them again.
2. Then I make a Templates folder and I graphically design the look and feel of the project and make one Form, List, and Table view with the theme and graphics I picked.
3. I then layout all my main tables
Once I am well into development I save a "normal" copy of my database every few changes as a revision, for example MYTest.fp7 would then become MyTest_r1.fp7, then MyTest_r2.fp7. Work from revision 8 to make revision 9, then work from 9 to make revision 10 and so on. This way if you find an issue you can always go back a version at a time until you find where it was working, then figure out the issue from there.
Yes, often times it is very beneficial to have dummy data in your solution while you work on it to be able to see the work and flow of your project.
Right again, setting up alert dialogs to let you know the calculation fired is sometimes all you really need.
Well I covered this above...
Unfortunately there is no easy way to develop with a database. A database is a growing living thing, the only way to test it completely is with data, but always have a way to test it live without compromising your base data, always use copies and test data.
If you have FileMaker advanced, it is often very useful to run complex scripts in the debugger the first time you try to perform the script. Not only can you see the script succeed or fail one step at a time, you can cancel script execution just as soon as you see that it is going to fail and this can sometimes save you a lot of trouble with having to make a new copy of your file in order to make another test...