There's nothing wrong with running
sudo. That's the correct way to create a file in a directory that needs root access. As for the rest of the files there being links, again, not a problem. If it makes you feel better, you can create the script in
/usr/bin instead but there's absolutely nothing wrong with having a regular file in
/usr/local/bin. In fact, according to the Filesystem Hierarchy Standard:
The /usr/local hierarchy is for use by the system administrator when
installing software locally. It needs to be safe from being
overwritten when the system software is updated. It may be used for
programs and data that are shareable amongst a group of hosts, but not
found in /usr.
Locally installed software must be placed within /usr/local rather
than /usr unless it is being installed to replace or upgrade software
in /usr. 
So, if you want to follow the FSH, you should put anything you install manually under
/usr/local, so you did the right thing.
Now, if you don't want the
.sh extension, simply remove it. It serves no function on *nix systems:
sudo mv /usr/local/bin/pdf2eps.sh /usr/local/bin/pdf2eps
Your script will now be in your
What you should do, however, is fix a few issues with your script that would make it fail if run on a file name with spaces or other strange characters. Modify it as follows:
# $Id: pdf2eps,v 0.01 2005/10/28 00:55:46 Herbert Voss Exp $
# Convert PDF to encapsulated PostScript.
# pdf2eps <page number> <pdf file without ext>
if [ $# -ne 2 ]; then
echo "Exactly 2 filenames are needed"
pdftops -f "$1" -l "$1" -eps "$2-crop.pdf"
mv "$2-crop.eps" "$2.eps"