When I doubt, for a desktop, use the generic kernel. For a server use the server kernel.
If you are going to run a kernel that is optimized for your hardware, I suggest you compile your own. It is intimidating to do so, but, with modern options, it is not that difficult.
After you install ...
Get the source
mkdir ~/src
cd src
apt-get source linux-image-$(uname -r)
Install the necessary packages to compile
sudo apt-get build-dep linux-image-$(uname -r)
Now you have all the parts you need to compile. The ubuntu kernel source code has already been patched.
In the "old days" you would have to know your hardware and select what to optimize and what to compile. These days you simply run the following command in the kernel source directory
cp /boot/config-your_kernel_version .
make localmodconfig
localmodconfig will examine the modules you are using and compile those (so no need to know your hardware).
Generally the defaults from localmodconfig are fine. You can run
make menuconfig
and go to the CPU section and see what, if anything, applies to your CPU. If you do not understand the options, go with the default.
Then run
make
make install
sudo make INSTALL_MOD_STRIP=1 modules_install
And update grub, boot to your new kernel.
See:
http://bodhizazen.com/Tutorials/kernel#easy
https://wiki.ubuntu.com/Kernel/BuildYourOwnKernel
Note: my instructions deviate from the ubuntu wiki, the ubuntu wiki will build the generic kernel unless you change the scripts in the debian directory and the .config files. I modified the config with localmodconfig ;)
See also : https://help.ubuntu.com/community/Kernel/Compile#Reasons_for_compiling_a_custom_kernel
Note: It is highly unlikely you will see a performance boost over the generic kernel. You might be able to benchmark it, but it is not going to make unity, your desktop, firefox, or other applications run faster.