It is possible to encounter horrible bugs if I place a main loop that uses `query_posts` right above the main bbPress loop?

I would not do it this way, but it should not be a problem. When your template file is executed the “real main loop” already contains the posts for this page. You then execute query_posts() to do a second query, which “hides” the “real” loop, but after you are done you execute wp_reset_query() which makes the “real” loop again the active loop.

It would get confusing and lead to errors if you would embed the two loops, thus if you executed another query_posts() in that main where loop. Then you must use get_posts() or a direct WP_Query to prevent errors.

Personally, I never call query_posts() myself and always use get_posts(), because it doesn’t change any global variables “behind my back”.