In a matrix organization, the project manager will gather resources belonging to different functional managers to work on his project. Typically, the project managers and the functional managers share power over the resources in the most common form of matrix environment, which is the "Balanced Matrix". This sharing of power often results in endless conflicts and fights over resources putting a sour taste in everybody's mouth, including the resources (the project team members).
The second common taste of a matrix environment is the "Project Matrix", where the project manager recruits resources from different functional managers, and where the project manager has much more (formal) authority than in a balanced matrix. In this sort of matrix, the functional manager cannot take resources back from the project manager unless the latter releases them, and the functional manager's authority is restricted to assessing his employees. This is the best form of a matrix environment to get a project done with the least amount of conflicts.
The third type of a matrix environment is called the "Functional Matrix", which, in my opinion, is ideal when the project manager lacks the technical skills. In this type of matrix, the project manager is responsible for all the project management activities with the exception of resource management. Resources are directly managed by the functional manager, who assigns the tasks to them after consulting with the project manager. This type of a matrix environment sees the project management work shared between the project manager and the functional manager, and can also results in conflicts if the roles and responsibilities are not clear and are not segregated.
There are other types of matrix environment but the above 3 are the most common.