The IIF expression takes three parameters: (1) a condition to check, (2) a value to pass on if the condition returns a True result, (3) a value to pass on if the condition returns a False result.
The condition to check is whether the dataset has less than 1 row. If the dataset has no rows, the condition will return True. If the dataset has at least one row, the condition will return False.
Based on the other parameters, if the condition is True, the IIF expression returns True. If the condition is False, the IIF expression returns False.
You said this expression is inside a Visible property of an object. So when the IIF expression returns True, the object is visible. When the IIF expression returns False, the object is invisible.
I hope that explains it fully and clearly. By the way, since the IIF expression is merely returning exactly the same values as the comparison inside the IIF expression, the statement could probably be simplified to simply = (CountRows("SrvyRespondents")=0)
It has been a while since I worked with expressions in this SSRS context, so there may need to be something other than the parentheses to tell it to evaluate the expression and return the result. But you can always keep the IIF expression in place if the way to take the simpler approach is not evident.