Properties get you some nice things, like synthesized getters and setters which are sure to be written in the best way for the property's retain/strong, assign/weak, atomic or non-atomic attributes. If you don't need code outside your class accessing the ivar at all then you should probably declare the ivar in the implementation itself and keep it completely hidden from the outside, like:
@implementation test {
BOOL bVal;
}
The answer to your other question is that it depends on the person, of course. Yes, there are plenty of people on this site parroting advice and code snippets without really understanding them. There are also plenty of people on here who really know what they're talking about.