I prefer to move QA into the development process itself (from the design stage through implementation and to exploratory testing) in order to avoid all of the falderol around different types of builds.
If you have the resources to do a full, soup to nuts QA run through at every step of the development process, then, in my opinion, you're either overstaffed or some people need reassignment.
In my opinion, you need to do a development build when you've completed a significant piece of code and need to 'draw the line' somewhere; that's at the discretion of the development team. About the only QA that happens on that build is something like a) check that all the files are there; b) check that all the tests pass; c) check that it installs and runs through a few basic user acceptance tests and is usable for further development.
A milestone build is the next level up, and requires an actual collection of features and bug fixes that may end up being a release. That's probably triggered by the project manager. All of the development testing is performed, as well as more rigorous testing of the new features and bug fixes by an internal QA person.
A release build is a really, really clean milestone build that's been tested even more throughly. Code reviews have been done on the changes, and perhaps an outside QA team has also tried it out and liked it. This is blessed by the director of development. A release build is one that's finally released to the client.
Alex / talexb / Toronto
"Groklaw is the open-source mentality applied to legal research" ~ Linus Torvalds