Project roles are defined in project management frameworks, like RUP, MSF, Scrum, PRINCE2, etc. Since your question is not related to software development, it's impossible to suggest "the best framework". However, two roles are certainly present in any project: project manager (money spender) and project sponsor (money giver).
Developer/Worker (I know IT stole the word, I am taking it back :))
Subject Matter Expert
Stakeholder (in most cases)
The size of the project is irrelevant. Even if the project requires only two human beings staffed full-time, each of these roles will need to be filled by one of these two people who will spend some of their 40 to 50 hour work week devoted to fulfilling the tasks within these roles.
Response to comments: I like the additional role of stakeholder but I am not sure they are a required role for every project. For example, a small home project would not necessarily have stakeholders that must remain in some way informed. I added anyway because I think in majority of the cases it is true.
The number of people involved in a project doesn’t really matter. The minimum required number (just as Ben points out) is one. This person needs to shoulder all the roles in the project such as Sponsor, PM, Developer etc.
Regarding the roles for a project, I would say that at least 3 roles are needed.