Mutual redistribution can be dangerous because you can get in a situation where each routing protocol gets back through redistribution the same routes it already had.
One way around this for Cisco routers is to tag the routes, and not redistribute some routes based on tags. BGP doesn't have tags, but you can set communities based on the tags to accomplish the same purpose.
There is also the problem of AD (Administrative Distance) where a routing protocol is preferred over other routing protocols if they have the same routes.
Redistribution is often the easy way, but it is also ugly, and it it can have unintended consequences. If you find yourself redistributing routes, then you should probably step back and see if there is a better way of doing things. If you do use redistribution, then you really need to look at all aspects of what it is really doing, and you should mock it up in a lab to see what is really going to happen before you put it into production.