Each core is actually a processor. For quite some time it has been difficult to make processors with multiple cores, so computers which needed to have high performance and do large number of tasks concurrently used multiple processors.
During this decade technology advanced so much that it's practical to have two cores on a single processor. That's basically 2-in-1 package which is often better than two separate processors. Cooling is easier and so is construction of motherboards. Plus the two cores can communicate with each-other faster than two separate processors.
Form the software side there are so called "threads". Basically each simple program can only do one thing at one time. If you want to do more than one thing, like click a button while your word processor is scanning a document, you'll need to separate program into smaller components which are called threads. Computer can quickly change which tread is being executed, so it gives impression to user that there are several things happening at one time. With computers with multiple processors, each processor can execute at least one thread (there are processors which can execute more than one at one time, but I won't go into that now). Sometimes one processor needs data from thread which is being executed by the other processor. Slowdowns can happen while one processor transfers data to the other. This multi core processors are less affected by this problem because cores are all in one processor.
Now for your specific questions. You are misinterpreting the 2 Duo part. It's (Core 2) Duo, that is Core 2 is successor to Core, as we had Pentium II as a successor to Pentium. Duo means that there are two cores on that processor. Your friend has 2 quad core Xeons. His system is a combination of multiprocessor system and multicore system. Each processor has 8 cores and system has 2 processors. They are also a bit faster than your processor when measured core for core.
That means that you can run 2 applications at the same time while he can run 8 applications at the same time. This is good in cases where some of the applications are very demanding are need a lot of processor time and their work is in separate threads. It is also good in cases where there is a single thread which is very demanding because system has extra processors which can be used to execute other threads so system appears more responsive.
There is also Xeon Core comparison. Both processors are related, but Xeon processors are meant for servers where there is need to process large amounts of data and where reliability is extremely important. They are usually of very high quality. Core processors are simpler desktop and laptop versions and they are cheaper and of lower quality. Also Xeon processors use different type of RAM which can detect errors caused by background radiation (among other things) and correct them. Further more, your friend's system can take much much more RAM than your own. I don't know exact numbers MacBook Pros at the time your processor was popular couldn't take more than 4 GiB of RAM, while your friend's computer could probably take at least 16 GiB of RAM and probably more.
As for the quality part I mentioned: Basically all processors of same generation are manufactured together. At one point of the manufacture, each processor is tested. After testing, processors are graded so that the worst processors which may be inoperable are discarded, processors with light damage have damaged parts disabled and are sold as cheap processors, fully functioning processors usually go into middle class and most expensive processors are those which gave best results at testing. I expect that testing if far more strict for Xeons.
So basically, almost everything your computer can do can be done by your friend's computer but much much more faster.