Pre-existing arguments when using queries

When should you use WP_Query vs query_posts() vs get_posts()?