onlyVisibleToRoles will trump the other visibleTo settings.
onlyAvailableForRoles determines which users will have the property at all, if they don't have the property it will not be visible to anyone
Keep in mind there are 3 places where these settings matter, "My Account" aka /Secure/UserProfile.aspx which is where the user can manage their own profile, /Admin/ManageUsers.aspx which is where admins can manage user profile properties, and ProfileView.aspx which is where site visitors can view a members profile.
visibleToAnonymous only comes into play on ProfileView.aspx in the case where unauthenticated users are allowed to view the member list they are also allowed to view the user profile, but you may not want them to be able to see all the properties on the user profile if they are not signed into the site, so setting this to false would hide the property in that case, but again, if true will be trumped by more restirctive setting of roles on the onlyVisibleToRoles.
onlyVisibleToRoles applies to all 3 places, ie if the user is not in the roles he will not see it on his user profile.
if you want the user to be able to see it but not edit it just set editableByUser to false
I confirm the problem with the boolean properties not displaying the images for true and false on ProfileView.aspx as a bug, I've just fixed it in my copy so it will be fixed in the next release coming soon.
Hope that helps,
Joe