How do mining pools work? I understand the following


  Pooled mining is a mining approach where multiple generating clients
  contribute to the generation of a block, and then split the block
  reward according the contributed processing power. Pooled mining
  effectively reduces the granularity of the block generation reward,
  spreading it out more smoothly over time.


How does it work under the hood? What does the mining pool server do in terms of computation? 

What do the mining workers do differently then if they would be mining solo?
What do the mining workers do differently then if they would be mining
  solo?


A miner that is mining within a third-party pool doesn't need the entire block chain. In fact it doesn't need to be connected to any peers of the Bitcoin network. These miners work entirely outside of the network and could technically just need to communicate to the administrator of the pool in order to mine. 

The admin of the pool, on the other hand, needs to be exposed to the Bitcoin network and needs to listen for new blocks and validate transactions. The admin of a pool is a full Bitcoin node as described in Satoshi's paper.


  How does it work under the hood? What does the mining pool server do
  in terms of computation?


What happens behind the hood is that the pool admin uses the combination of the miners computation, within her pool, as sort of an extension to her computational power. To do this there's specific software installed on the admin's server that takes care of making sure each miner is doing the work requested. 

During a 10 minute block cycle, since most miners within a pool won't actually solve the block (only 1 miner on average will), the admin needs to make sure that miners are actually working on the problem.

To do this the miners solve a reduced difficulty hash, but one that could have also solved the actual hash, so it proves to the administrator they're actually working on the problem.