12 bit ADC to 8 bit DAC A bit of background information:
I plan to start experimenting with digital signal processing on microcontrollers. The particular microcontroller I plan to use (TI Stellaris LM4F230H5QR, from the Stellaris Launchpad) has a 12 bit ADC integrated on it, while on the other hand, all DACs I that look like possible candidates for me to use are 8 bit. 

Obviously, before getting the output, I'll have to reduce the bit depth somehow. I could just get an 8 bit ADC and avoid the issue altogether, but I'd like to keep as much of the signal processing line at 12 bits as I can. 

Questions: 
First, am I right in my assumption that by keeping 12 bits for as long as I can, I'll get better results?
Second, is there a smarter way of turning those 12 bits into 8 bits than just shifting everything to the right four times?
The first thing I would enjoin you to do is to measure the actual accuracy of your ADC. The 12-bit performance announced by the manufacturer can often be reached only in ideal conditions, such as:


Using an external precision voltage reference rather than the built-in one.
Using a distinct power supply for the analog section of the MCU.
Using all the necessary EMI isolation/filtering parts as specified in the app notes... that your target dev. board might not have because of cost cutting (it can be as simple as a ferrite between VCC and AVCC).
Using slow sample rates.
Preventing any I/O pin to switch during acquisition (eg, disabling a SPI or UART spitting data in the background, disabling interrupts causing a GPIO to be toggled, disabling PWM peripherals..), or even putting the entire chip in sleep mode during acquisition.


In non-ideal conditions, I have seen ADCs lose up to 3 bit of precision. All this to say that your assumption that doing the processing with 12-bit data all along is correct as long as you truly have a resolution of 12-bit on your input; but if it's actually 8 bits because you are far away form the "sweet spot" of the ADC, there's no point keeping and processing 4 bits of noise all the way - you can just do the reduction at the source.

Converting from 12 bits to 8 bits through rounding or shifting is going to cause quantization noise correlated with your input signal. Dithering algorithms can be used to solve this problem and spread the quantization error. You also have the option of shifting the quantization noise in a frequency band where it is less harmful, through noise shaping methods.