IF vs IIF: IF is a logical operator - IF a THEN b ELSE c. Whereas IIF is a construct, meaning 'IF and ONLY IF' and the SQL syntax differs - IIF (a, b, c) - which will execute b on TRUE and c on FALSE.
In terms of reporting, I would steer clear of IIF and go for IF with a code block for connected statements to execute when evaluated to true to avoid ambiguity and allow for multiple statements e.g.
IF @a = True
BEGIN
-- do something
-- do something else
END
ELSE
BEGIN
-- do something
-- do something else
END
Rather than:
IIF (@a = True, do something, do something)
There's an interesting discussion on the mathematical differences of IF and IIF over on Wikipedia (link below), and how the English term of IF and ONLY IF is actually wrong (should be ONLY IF and IF).
Links below.
IIF: http://msdn.microsoft.com/en-us/library/hh213574.aspx
IF.. ELSE: http://msdn.microsoft.com/en-us/library/ms182717.aspx
Wikipedia: http://en.wikipedia.org/wiki/If_and_only_if