Is it possible to either check the return value of the entrypoint interaction or read a big_map of B's
You cannot do that both on-chain and without the collaboration of contract B.
Can you please explain in more details your scenario? If you don't trust contract B you should probably not interact with it.
You cannot read other contract's data directly.
Currently, Tezos only supports a callback pattern.
You can send a callback to another contract, and then the contract calls you back with a response.
This template should give you an idea: https://smartpy.io/ide?template=collatz.py
Only next proposal (Hangzhou) will allow synchronous calls (on-chain views): ...