if what you want is logic to show when it's category 5, 9,10,11...16 or 17 you CAN use code like
is_category(array(9,10,11,12,13,14,15,16,17))
see http://codex.wordpress.org/Conditional_Tags#A_Category_Page
HOWEVER, it's good that you posted the code of your category-1.php, cos that's complicated and unusual in that it's a sort of 'fake' category page running multiple loops and calling query_posts multiple times and modifying $wp_query, which the usual conditional tags depend on.
the sidebar is called after all those so the widget logic you can use will be limited by the last query_posts run and $wp_query modifications made. for whatever reason your code leaves wp_query set with 'wp_query->is_home = true;' making it seem indistinguishable from the home page as far as WP's conditional tags will be able to tell.
if you still want widget logic to work on things like is_category('5') you'd have to 'save' the original wp_query before running all this code and restoring it before the sidebar is asked for. you may need to google around for 'multiple loop' info on how to do that.
BUT a simpler approach, given the complexity of the code already, might be just to specify a new global variable you can test in the widget logic. so before get_sidebar(); add something like
$my_fake_category=5;
and then your widget logic could very simply be:
($my_fake_category==5)
i haven't tried this, but it seems good. you may need the more complex
global $my_fake_category; return ($my_fake_category==5);
should the global variable not be 'visible' to the widget logic code.