OK, I understand what you're looking for. What you could do is create a new template just for your categories. Then in your index.php, when you call the category list, use
<?php wp_list_cats('children=FALSE'); ?> . This will hide the child categories from your front page. Then in the category archive template, you'd use the
<?php wp_list_cats('child_of=X'); ?> where X is the category ID of the category you're viewing. This should show only the child categories for the category ID specified. Unfortunately, I haven't figured out how to dynamically pass the category ID. Keep an eye on the solutions in this thread and your answer to the last part should be solved.