3.1 adds a ton of new buffer types, geometry instancing, and a few other performance-essential features. 3.2 adds geometry shaders, and also fences (which I imagine are tricky to implement). 3.3 is probably the smallest of the 3.x releases (most of what I can remember as being useful in 3.3 are GLSL syntax/feature improvements that should be trivial to implement over 3.2, but there's probably other features I'm not remembering).
Just getting geometry shaders in is going to be a massive undertaking. Proper instancing -- including all the various other features in GL 3.1 you need to actually use instancing effectively -- is also going to be a really big item.