1. Extensions only mean something to the Windows operating system (and perhaps some others that I don't know anything about). You can name an XSLT file anything you like and software that processes it won't care about its extension. And why .xsl and .xslt? That dates back to when filenames could only be 8 characters and extensions only 3 characters.
2. It's possible to write an XSLT that doesn't require an input file, but uses the document() function to get all of its input.
3. How does an XSLT processor know where to find the XML to be transformed? You tell it where. Exactly how you tell it depends on the processor (read its documentation), and on whether you run it from the command line or from within a
Java program or from some framework.
4. No idea.