Should I use getwork or getblocktemplate
The advantage of getblocktemplate is that work units from it last longer, because you can change the extraNonce field. That's nice if you're writing an fpga miner, because it saves bandwidth. 

getwork will probably never go away. It's useful and not very hard to maintain. Note that that's a personal opinion; I'm not one of the Bitcoin developers.

Edit: getwork has been removed in v0.10.0, so you have to use getblocktemplate.