A unique property has one value. When a build is done, the value of a unique property is the first one defined in the project hierarchy. For example, the Treat Warnings As Errors property could be set to Yes at the solution level, which would then be applicable to every file in the solution that is compiled, assembled, and linked. You can then selectively define property values for other project items. For example, a particular source file may have warnings you decide are allowable, so you set the Treat Warnings As Errors to No for that particular file.

Note that, when the Properties window displays a project property, it will be shown in bold if it has been defined for unique properties. The inherited or default value will be shown if it hasn't been defined.

solution — Treat Warnings As Errors = Yes
    project1 — Treat Warnings As Errors = Yes
        file1 — Treat Warnings As Errors = Yes
        file2 — Treat Warnings As Errors = No
    project2 — Treat Warnings As Errors = No
        file1 — Treat Warnings As Errors = No
        file2 — Treat Warnings As Errors = Yes

In the above example, the files will be compiled with these values for Treat Warnings As Errors:

project1/file1 Yes
project1/file2 No
project2/file1 No
project2/file2 Yes