Many projects have one overall budget that includes all of the estimated costs - including labor costs, hardware/software costs, materials costs, etc. This is fine for smaller and medium sized projects. However, as a project gets larger it helps to have the overall budget broken down into a series of smaller, more discreet entities. Smaller budgets (and projects) give you more control. Having your budget allocated at a lower level allows you to keep better control of the details and it may point out potential budget trouble quicker than having everything rolled up into one consolidated project budget.
Cost accounts are formally established in your organization's General Ledger so that your budget is actually allocated in each detailed cost account and the actual project expenses are reported at that level as well.
The cost accounts can be established a couple of ways. One way is to simply divide the different types of costs in separate cost account budgets. In this approach, you could have a cost account for internal labor charges, external labor charges, hardware costs, software costs, training costs, travel costs, etc. There are two benefits to this approach. One is that the project manager and sponsor can determine more quickly if there is a cost overrun in a particular category. For instance, if you're running overbudget on your hardware costs, having this separate cost account will point this out more quickly than if all project costs are rolled up in one large budget. Second, this method of cost breakdown allows your company to better classify expenses and capital purchases (which is why it is actually fairly common on many projects).
Another way to set up the cost accounts is by allocating the overall budget based on groups of related work, like project phases. For instance, you could set up a different set of project cost accounts for the Analysis Phase, Design Phase, Construct Phase, etc. Again, the smaller budget allocations give you a more discreet level of manageability. Here's what I mean: Let's say that you have a project with a budget of $500,000. Of this total budget, the project management cost is $75,000. The analysis work is estimated at $150,000. The design work is $50,000, etc. (This is obviously an oversimplification.) In a traditional, single budget project, you might have a hard time determining exactly whether you are on budget or not since many of the activities might overlap. However, if the major types of work are separated into unique cost account budgets you can more quickly determine if you are trending over your analysis work, project management work, etc.
Theoretically, for maximum control, you could set up a cost account for each activity, but that doesn't make practical sense. Instead you may set up a separate cost account and budget for each phase, stage or milestone (A milestone represents the completion of one or more deliverables.)
If you set up cost accounts for individual phases or stages (related "chunks" of work), you can also track the types of expenses (labor, hardware, travel, etc.) within each cost account by establishing sub accounts within the larger cost account. Of course, the extra precision that you obtain for tracking your expenses also requires more work in setting up, allocating and tracking the cost account (and sub account) budgets. However, if your project is very large and costly, you definitely want to utilize some aspects of this technique.