The targets within a single project file are usually strongly related. For example, if you have a product that collects data and which has several related components, DataCollector, DataCollectorAdministrator, and DataCollectorLibrary, those components might all be targets in the same project. Furthermore, you might also have targets in that project for things like unit tests and even documentation.
You probably wouldn't have a target for a mostly unrelated product, BaseballStatsGuru, in your DataCollector project. You'd use a different project file for that, because it's really a whole different product, even though it uses DataCollectorLib as one of it's components. Even though it's a different project, you still want BaseballStatsGuru to be rebuilt whenever DataCollectorLib changes, so it always uses the latest code. That's fine -- you can add the DataCollector project to the BaseballStatsGuru project as a dependency.
There's even a special type of target called 'Aggregate':
Aggregate takes this a step further: an aggregate target doesn't have a product of it's own -- it only exists so that it can be dependent on other build targets. When you build an aggregate target, it causes all the targets that it depends on to be built (if they're not already up to date). So, you could create a single uber-project that includes all your other projects as sub projects and depends on them. The target of that project would simply be an aggregate target that depends on the targets of all its sub projects. Using a system like this gives you the ability to build a whole series of products with a single command.
Note that this isn't exactly novel -- you can do the same thing with makefiles if you want to.
In practice, is anyone efficiently using this Xcode built-in structure
to manage code and products?
Sure. Both the ability to have different targets and to create dependencies between targets are very important. I'm not sure how to characterize the level of "efficiency," but you can bet that having Xcode manage the dependencies is a lot easier and more reliable than trying to do it by hand.