I'm new to QGIS 2. I have a polygon shape with two classes, and I want to set different labeling style and different "Scale-based visibility" but I don't get how the expression works.
Go to Style tab of layer properties dialogue. Select rule-based option from the dropdown list. Here you can define how polygons should be rendered (see image below)
I defined two styles, one for polygons having id = 1 and the other for polygons having id = 2. Their min. and max. scale differ, as you can see in the picture.
For the labels probably the easiest way is using data-defined properties on Labels tab. See how it works here.
Here you can see both polygons visible as they fit between min. and max. scale (I changed the values, the princip is the same though).
And here you see just the blue one because I zoomed out far beyond the max. scale of the green polygon.
If you have any further questions, feel free to ask.