My left navigation would be:

Category 1
--type 1
--type 2
Category 2
--type 1
--type 2
Category 3
All Categories

On the right hand side, i will have drop down with (type1 and type2 in it)

Scenario 1:
When the user selects "All Categories", system will display all products; when the user select type1 from drop down, it should show all type1 products from all categories

Scenario 2:
When the user is in "Category 1", it will display all products under category 1(both type 1 and type 2 products). Now when the user pick type 1 from drop down; then it should display products from "Category 1" and of "type 1" products only.

How to achieve this?

Here is what I am thinking:
I created two vocabularies ("Category" and "Type"), Admin will pick both Category and Type while creating a product. I Will create a blanket view with all products; and control the navigation with arguments. Does it work?

My question is: i never worked on arguments, how do i acheive this? Any pointers or code samples are appreciated.

Note: My categories are pretty much static, so as types.