How to limit get_posts()?

You can use posts_per_page or numberposts.

http://codex.wordpress.org/Template_Tags/get_posts#Parameters

EDIT: Regarding your edit. You cannot have the posts_per_page different to the LIMIT in the SQL query. get_posts() creates an instance of WP_Query and returns it using the posts_per_page as the LIMIT.