Thus when the a template fires its 'current node list' is the set of all 9 child nodes of test. There's no explicit rule matching test so the default rule applies, which for elements means.
In your example the root template applies templates to its two child nodes (the text node containing the line break after the xml declaration, and the test element).
The position() function gives you the position of the current node within the 'current node list', which is whatever was select-ed by the nearest apply-templates or for-each (XSLT 2.0 refers to 'items' and 'sequences' rather than nodes and node lists but the principle is the same).