"Core 2 Duo" is Intel's trademark name for some of its processors. It alone does not tells much about the processor, except them using Core 2 Intel architecture.
(Physical) processor core is an independent execution unit that can run one program thread at a time in parallel with other cores.
Processor die is a single continuous piece of semiconductor material (usually silicon). A die can contain any number of cores. Up to 15 are available on the Intel product line. Processor die is where the transistors making up the CPU actually reside.
Processor package is what you get when you buy a single processor. It contains one or more dies, plastic/ceramic housing for dies and gold-plated contacts that match those on your motherboard.
Do note that you always have at least one core, one die and one package. For processor to make sense, it has to have an unit that can execute commands, a piece of silicon physically containing the transistors implementing the processor, and the package that attaches that silicon to contacts that mate to motherboard and IO.
Dual-core processor is a processor package that has two physical cores inside. It can be either on one die or two dies. Often the first generation multi-core processors used several dies on single package, while modern designs put them to same die, which gives advantages like being able to share on-die cache.
The term "CPU" can be ambiguous. When people buy "a CPU", they buy a CPU package. When they inspect "CPU scaling", they talk about logical cores. The reason for this is that for most practical purposes dual-core processor behaves like two processor system, ie. system that has two CPU sockets and two CPU single core packages installed to them, so when talking about scaling, it makes most sense to count the cores available; how they are installed to dies, packages and motherboard is less important.
The term "package" also has several meanings: Here CPU "package" means the piece of plastic, ceramic and metal that contain the CPU. Each CPU socket on motherboard can accept exactly one package; package is the unit that's plugged to the socket.
You can see example of two-die quad-core processor here.
The CPU, or CPU package, is pictured from top and bottom on the first photo.
The metal-colored rectangles on the top side are the two CPU dies. Each of them contains two CPU cores, making four in total. The golden pins on the bottom side mate to connectors on motherboard.
On this page you can see one of the two dies in the Core 2 Quad in the second image.
As you can see, it's symmetrical; the upper side contains one core, bottom side the second core. Two pieces of silicon like this are attached to CPU package to make a quad-core Core 2 Quad.
Best Answer
Ivy Bridge, Haswell, etc. are code names taken during the development period of a new CPU architecture, which often corresponds to a generation of Core-i processors (and their Pentium and Celeron product lines with specifications even lower than Core i3).
And this is where the first few exceptions arise (smile after me):
Different code names are used for the 1st generation Core processors, including Clarkdale (mid-end Core i3 / i5, as well as Pentium and Celeron of the same generation), Lynnfield (mid-high Core i5 and i7), Bloomfield (high-end Core i7), Gulftown (Core i7 Extreme) and Arrandale (mobile CPU), and potentially more.
Despite having different code names, their microarchitectures don't differ much.
For this part, I assume we're talking about desktop processors (mobile processors have another whole load to talk about).
As explained perfectly in other answers, Ivy Bridge is the code name for the 3rd generation Intel Core processor family, and you'd expect Core i3-3240, Core i5-3670, Core i7-3770. The first number of the 4-digit "model number" usually is the generation number, with some exceptions:
Within the same generation, all CPUs have an identical microarchitecture, and usually come with related traits, for example CPI (cycles per instruction), on-chip cache arrangement, power consumption, PCIe bus support, and ISAs (with exceptions).
The name Core i3, Core i5, Core i7 are product names for processors targeting different markets, just like Apple's iPhone XS Max, iPhone XS and iPhone XR (all of them are the same generation iPhones with different specs and prices). Within the same generation, they're identified easily by the number of cores and support for hyperthreading (HT). For example, for all Core processors ranging from 1st generation to 7th generation, Core i3 has 2 cores with HT, and Core i5 has 4 cores without HT, while Core i7 has at least 4 cores with HT.
When comparing across generations, things start to get complex:
I think mobile processors can't just be ignored this easily.
Contrary to desktop processors, mobile ones are heavily constrained by TDP, due to considerations of power supply, cooling as well as battery life, and as a consequence mobile processors aren't separated vertically the same way as desktop ones.
The first notable difference is that the first digit of a mobile processor always corresponds to a generation (as of now). That says, even if i7-6950X is a 5th generation desktop processor (Broadwell), i7-6970HQ is still a 6th generation mobile processor (Skylake). One same thing is that the 1st generation doesn't have a leading 1, so there comes i3-330M, not i3-1330M.
The key difference between desktop and mobile is their vertical segment.
These "standard voltage" processors don't go below 35 watts with their TDP, and there are other product lines for needs of specifically low powers. They aren't directly comparable with standard processors (targeting low power & battery endurance vs. targeting performance).
And honestly, I don't see many practical differences between i5-U and i7-U, except for a minimal difference in clock frequency. More important differences aren't identified by i5/i7, however, like integrated graphics (HD Graphics / Iris / Iris Pro, all of which can appear on both i5 and i7).
To sum up, Core-iX are different vertical segments of Intel's CPU product line, while code names are chronological iterations of CPU architecture.