Note that this article does not generally apply to Puppy and many Linux distributions. Puppy essentially does use extensions in the same way as Windows (at least from the perspective of the average user).
In Windows, file names matter -- the file extension is used to associate the file with the type of program that will be used to execute/process files of that type.
In Linux, files can be named most anything, and the file extensions are mostly not needed/used, except maybe by the humans looking at the files to keep track of things.
Instead, the first line inside the files is used with a special #! command to tell the system what program to use to process the file.
http://www.halley.cc/ed/linux/newcomer/filename.html∞
Don't Judge a File by its Filename
$ file /bin/bash
/bin/bash: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV),
$ file britney.jpg
britney.jpg: JPEG image data, JFIF standard 1.01, resolution (DPI), 72 x 72
$ mv britney.jpg britney.exe
$ file britney.exe
britney.exe: JPEG image data, JFIF standard 1.01, resolution (DPI), 72 x 72
Next: The Whole Shebang, or What's in a Script >
Text, code, layout and artwork are Copyright 1996-2005 Ed Halley.
Copying in whole or in part, with author attribution, is expressly allowed.
http://www.halley.cc/ed/linux/newcomer/shebang.html∞
The Whole Shebang, or What's in a Script
A shell script is merely a list of commands to be executed in the proper order by a shell environment like bash. A shell script can do anything that you could type manually. Conversely, you could type anything that a shell script contained, to do the same tasks manually.
There are many shell script interpreters, and some that are not even intended for use as an interactive command prompting space for users to type their commands. For example, Perl scripts may start with a shebang line similar to #!/usr/local/bin/perl. They're still interpreted by that process and any code within is executed on behalf of the user who invoked the command.
Also, note that the filename has nothing to do with the type of shell required for running the script. The script could have been called sample, or sample.pl or even kernel.exe. In Unix and Linux, it is the contents (such as its shebang), and not the name, which determines how the system will go about executing or opening the file. Many of the commands you run in Linux are just shell scripts that have no filename extensions.
Some helpful manual pages on your Linux system may be (help source), (man bash), (man chmod), and (man perl).
Some helpful google searches may be linux shell commands scripts, linux shebang notation, linux bash PATH variable, linux file mode permissions, and common scripting languages.