Since you're using MS-PL and Apache 2.0 components, you're restricted by the MS-PL license and the Apache 2.0 license. This means you can't use the GPL anyway, since it's incompatible with MS-PL, and version 2 of the GPL is also incompatible with Apache 2.0. Given that, I would suggest releasing your parts either under MS-PL, Apache 2.0, or a BSD-style, so you're not adding requirements.
You can read the licenses to see what you have to do. They aren't long. With MS-PL, you can do pretty much everything as long as everything's released under MS-PL and you include the entire license (which isn't long). With Apache 2.0, it's pretty much the same, except that you need to include any NOTICE file. You do have to include all attributions, etc., and that's pretty standard across OS licenses.
You really can't add to the licenses. You are free to put any disclaimers you want. You can put them in a NOTICE file, which under Apache 2.0 requires them to be preserved.
You should list which files are under which licenses, and you do have to include full copies of MS-PL and Apache 2.0 in the package.
Be careful about ADO.NET Entity Framework CTP4, as you say you can't find a license. If you can't find a license, ordinary copyright law applies, and you can't legally use it. You may want to write to whoever owns that code, and see what license they use.
As far as copyright ownership goes, you can never retract open source licenses for the versions you release under them, but if you own all applicable copyrights you can relicense as you wish. Some companies, like MySQL AB, released what they had under the GPL, and would sell other licenses for money, so that (say) another company could use MySQL as a part of their commercially sold product without having to release under the GPL.
Since you're using components owned by other people, you really can't do that with the entire project, but you could with your portions.
To do that, you'd have to get everybody who contributes to fill out a copyright assignment form, along with some proof that they do own the copyright (and, for example, that it doesn't count as work for hire for an employer). This does tend to diminish user contributions, so you may want to skip it entirely. You might want to look at what the Gnu project does, since they do want complete copyright, and emulate them.
If the files you use have (had) a header stating their origin, keep them. If they don't have, add one. You could also add an AUTHORS
file to your project where you list all authors and all projects you took code from. If the code you use has a different license, it might also be good to add an extra license file for that. For instance, if you use source code of the fooBar project, add a file COPYING.fooBar
to your project that contains the license of fooBar.
Best Answer
The Berne Copyright Convention specifies that copyright descends on a creative work the instant it is created. You don't need to do anything special to copyright your work. That wasn't always the case - back in the day, one needed to register copyrights, and renew them periodically, but that's not the case anymore.
You SHOULD place a copyright notice in each of your source files, as well as the About or Credits box of your binary. Note that you will still own the copyright of your work even if you don't include a copyright notice, but having it there prevents trouble in the event of a dispute.
The various open source licenses have different requirements for applying them to your code. The BSD and MIT licenses must be pasted verbatim into each source file.
The GPL is generally provided separately in a file called COPYING or COPYING.txt, with a notice in each file stating that it is licensed under the GPL, and that the license itself is in the file COPYING or COPYING.txt. Detailed instructions for applying the GPL are found at the end of the GPL license text itself. If you use the GPL, follow its instructions, not what I posted here.