<RequiredTargetFramework> requires specific version of the assembly, and it's the least version.
If you use high version Toolset, it will include lower .NET Framework versions. For example, .NET Framework 3.5 Toolset can target .NET Framework versions 2.0, 3.0 or 3.5. If you use following code:
<Reference Include="System">
<RequiredTargetFramework>2.0</RequiredTargetFramework>
</Reference>
And use 3.5 Toolset:
<Project ToolsVersion="3.5" ... </Project>
It can be built successfully for 3.5 toolset for 3.5 toolset includes .NET Framework 2.0 and higher version.
if you set TargetFrameworkVersion = v4.0, and use RequiredTargetFrameworkVersion to 3.5 for one assembly, and you will get 4.0 version of this assembly in project if it has 4.0 version. But if you use TargetFrameworkVersion = v2.0, and this assembly will be not loaded into project.
For you understand Toolset better, see MSDN document: Using MSBuild toTarget Specific Versions of the .NET Framework .