3 Answers
3

A target is a subset of the files, and specific preferences (which override the project preferences).

Each target builds a product, which may be a library, executable, or framework.

Because a target builds something, it also has Build Phases and Build Rules, where you can add dependencies, and refine what gets copied where and how.

It's a good thing to have both because it lets you create different products from the same set of files. As an example, you can target different architectures/devices, or build a testing product which runs unit tests against your code.

You can have multiple targets in 1 xcode project.
That way you can develop a project that has multiple applications or frameworks, like an application that also includes a framework you are working on. You can make xcode compile the framework target, then it can compile the other target, your actual application and copy the framework in the frameworks path in the bundle.