Show field, if cb_profile_id = [cb:userdata field="Id" user="#me" /] AND cb_profile_type = "business"
Your user id condition is likely not working as expected. Recommend using the below to check if the profile owner and viewing user are one in the same.
Field: Custom > Value
Value: [user_id]
Operator: Equal To
Value: [cb:userdata field="user_id" user="#me" /]
If I set the location to also include "Edit", the field shows/hides as expected, but any change the logged in person makes to themselves is not saved.(although the message says it is).
Even changes to tabs or fields that don't have conditions? Enable debug mode and maximum error reporting in Joomla global configuration. Next edit your condition and at the bottom enable debug mode for the condition you suspect is working incorrectly and save the profile. This should output debug messages if any errors occurred as well as what values your conditions are seeing. I'm not seeing any further issues in my tests and suspect it's just a condition configuration problem caused by your user id check.
Not sure if that is clear, or something to test at your end. In my case, I just keep the location to "view" only, and it seems to be applying to "edit" anyway, but it took a while to figure out.
That should not be the case. If the condition is set for profile view only it should not be applying at all to profile edit. This was fixed in the latest build. Please be sure you've updated CB Conditional.