Working with the BizTalk 2006 R2 BRE api, I find myself going back to this code to start of as a base. These 2 functions get ALL of the versions of the policies or vocabularies. If you want to work with only the latest, or the published ones, change the RulesStore.Filter enum to whatever your needs.
List of Policies
This is how to get a list of all policies published on the BRE database. Once you get all of the RuleSets, you can loop through each of them to retrieve the actual rules behind them. Before getting to the rules, you need to get a RuleSet out of the RuleSetInfo.
List of Vocabularies
This is how to get a list of all vocabularies published on the BRE database. If you need to see how to get to all of the definitions on a particular vocabulary, see my previous post: How to access BRE Vocabularies from .NET.
Noticed that there are some subtle differences in how you retrieve each piece of information. For Policies you get a RuleStore while to get the Vocabularies you need to get a SQLRuleStore.
As usual, feedback is always welcome if you use this code.