1 - <xsl:if test="parent::* and count(parent::*/*)>1">
(*) Does 'parent::*' mean go to the parent element and down to the first child of the parent element?
No. It means select the parent element, whatever its name.
parent::*/* is short for parent::*/child::*, which selects the parent element whatever its name, and then selects all the child elements (of the parent), again regardless of their element name.
2 - <xsl:if test="*">
Does '*' mean check if the current element has a child node?
That's the effect, but only indirectly. * is short for child::*, which selects all the child elements of the context node. Used in a boolean context, a node-set is true if it is non-empty. So you are testing whether the node-set consisting of all the child elements is non-empty.
Michael Kay
http://www.saxonica.com/
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference