There are several taxonomy modules in contrib which can display navigation blocks with categories. Check the module list on drupal.org for modules who have "taxonomy" is their name.
As far as you other question, this is easy: the taxonomy URLs support a depth parameter, which specifies how many levels of child categories to include. You can specify a number, or "all" to include all children.
e.g. change: taxonomy/term/1234 -> taxonomy/term/1234/all
However, Drupal will not use these URLs by default. You can use them in custom links and path aliases though.
Steven Wittens