Handbrake, as was mentioned by amdfangirl, is a good choice. Another one to consider is MPEG Streamclip.
For using CUDA MediaCoder was suggested in this thread: http://www.tomshardware.com/forum/242083-49-best-cuda-video-converter
Any Video Converter claims to make conversion rates faster with the use of CUDA: http://www.any-video-converter.com/speedup-conversion-with-nvidia-cuda.php
The GPU may benefit more with rendering than encoding which may be best left to the CPU. After much reading it appears as though you will get better quality video encodes using the CPU vs. the GPU.
As far a file size goes it depends more on the container than the GPU (CUDA).
Basically, from much reading on the topic, you trade quality for speed when using a CUDA enabled encoder.