The seven most common extensions that you see on the end of URLs are demonstrated below:
When the Web started, it ran almost exclusively on UNIX machines and all pages were static. "Html" was the standard file extension. When people started using PCs running DOS or Windows as web servers, however, the 4 letters in "html" were problematic. PCs followed an 8.3 naming convention that allowed only 3 letters in the extension. So the world made room for 2 standard extensions: html and htm. It used to be you could tell whether a web site was running on UNIX or Windows by looking at the file extension, but now there is no distinction. HSW runs off a UNIX server but uses "htm" as its extension - it's the webmaster's choice.
Pages tagged with "shtml" reveal that "Server Side Includes" are being used on the server. Htm and Html pages are static. The file is lifted off the server's disk and sent verbatim to the client. With SSI a page can contain tags that indicate that another file should be inserted in place of the tag in the existing page. So a page is lifted off the server's disk and the server makes all the substitutions indicated. Then it sends the final page to the client. This approach makes it very easy to change things like headers and footers on pages across an entire site.
You will see the "nsf" extension if a site is powered by Lotus's Domino server. This server takes standard Lotus Notes databases and
dynamically converts the content of those databases into web pages when the page is requested. The site's pages can change throughout the day depending on the content of the databases.
Active Server Pages (ASP) is a Microsoft technology that allows even more flexibility. A web page can contain Visual Basic code that the server executes when it lifts a page off the disk. This code can do just about anything - read databases, run other programs, custom format pages based on the user's ID, etc. You have a great deal of flexibility. On the other hand your web pages now contain code which may have bugs in it, so it is possible for a page to "crash". With freedom comes responsibility...
[Note that is now becoming somewhat common to see a "jsp" extension as well. It's one of the latest additions to the Java Enterprise suite of APIs. "Jsp" stands for "Java Server Pages" and is effectively Java's response to ASP. The code embedded in a page is Java rather than Visual Basic.]
The "pl" extension stands for PERL, a scripting language. The page contains nothing but PERL script, and the script builds the page on the fly. The script can also do anything as in ASP pages.
The "cgi" extension also means that a page contains code executed by the server, but the type of code could be just about anything. On HSW, C++ code is compiled to create "cgi" files. See How CGI Scripting Works for details on PERL and CGI.
Here are 3 interesting links.