Regarding workflow: the default profile is pretty much always my starting point. It's rare that I don't end up repurposing the fields and templates that are already there to start building things out. Likewise, I usually end up just renaming (as necessary) and repopulating the pages that are already in the default profile. Then I will start adding new fields, followed by templates, specific to the needs of the site. While I try to determine most of the templates/fields that I'll need ahead of time, I will continue adding fields and templates throughout the entire development process as necessary to make the site do what I want it to.
Most larger PW sites are pretty relational and make good use of Page references. But this is also the part that I think is most important to outline when it comes to workflow. This part is quite a bit different from other systems, but has major advantages. I try to make my selectable Page references part of the site's structure, if at all possible. For example, on tripsite.com, every bike tour has a "country" page reference field, and those countries are useful in the site's overall structure (Netherlands in this case):
http://www.tripsite.com/countries/netherlands/
In other cases, page references might not fit as part of the site's general structure, so I'll have a /tools/ section in the site where they live. Though it's easy enough to make them function as pages, so I figure why not. Here are a few examples (they are all using the same template):
Multi-page reference field "months" (April in this case):
http://www.tripsite.com/tools/months/april/
Multi-page reference field "tour_types" (Guided in this case):
http://www.tripsite.com/tools/tour-types/guided/
Page reference field "difficulty" (Difficult in this case):
http://www.tripsite.com/tools/difficulty/difficult/
The template used on those pages is not much more than this:
$tours = $pages->find("template=tour, {$page->parent->name}=$page, limit=10");
foreach($tours as $tour) {
// output the tour
}
Admittedly, most of my projects are rebuilding existing sites, so I usually have some (or a lot) of data to migrate to the new site. This becomes a major component of the development workflow, so I figured I should mention it here. After I've setup the necessary fields and templates (and usually before front-end development), I'll work on bringing in the new data. If it's a relatively simple conversion job, I might use the ImportPagesCSV module. But most jobs require some markup replacement, character set conversion or other things, so I'll build my own import script. This is where I like to bootstrap PW from a command line PHP script. Here's a simple example:
/import-airports.php
#!/usr/bin/php
<?php
require("./index.php"); // bootstrap PW
$fp = fopen("./airports.csv", "r");
while(false !== ($data = fgetcsv($fp))) {
$page = new Page();
$page->template = 'airport';
$page->parent = '/building-types/airports/';
$page->title = $data[0];
$page->location = $data[1];
$page->year = $data[2];
$architectName = wire('sanitizer')->pageName($data[3], true);
$architect = wire('pages')->get("/architects/$architectName/");
if(!$architect->id) {
$architect = new Page();
$architect->template = 'architect';
$architect->parent = '/architects/';
$architect->title = $data[3];
$architect->name = $architectName;
$architect->save();
}
$page->architect = $architect;
$page->save();
echo "\nCreated page: {$page->url}";
}
Once I've got a lot of data to work with in the system, I'll start doing front-end development: creating the template files, markup, css and anything else necessary to handle the output for the site. The files from the basic profile either get used as a starting point, or replaced completely at this point.
These are my main workflow components I can think of, but let me know if there are any specific areas you'd like more detail on or can think of anything I've missed.