Trying to query all posts in category 4

For your issue regarding only returning 20% of your posts, try the following

<?php query_posts('cat=4&posts_per_page=-1'); ?>

Note: By default, 10 posts are returned. -1 will return all posts in the resulting set.

http://codex.wordpress.org/Function_Reference/query_posts#All_Posts_in_a_Category

For your question about passing through the Category Name, you can pass through the category_name as parameter, which accepts the category SLUG.

http://codex.wordpress.org/Class_Reference/WP_Query#Category_Parameters

As mentioned by @Bart Karp, you may want to reconsider your usage of query_posts.

See the following answer for more information on usage of WP_Query vs query_posts() vs get_posts()When should you use WP_Query vs query_posts() vs get_posts()?