1 – one of the reasons for creating bidirectional relationships is to improve query performance. This is done so that you can use get_field() from either side of the relationship rather than doing reverse relationship queries.
2 – Code examples you will finds will require creating mostly duplicated code for every relationship you want to make bidirectional. There are more examples of different ways to do this, some of them can be found here. There are plugins that will do this as well.