(hd0,0) is Grub syntax. (Note that these are parentheses, not square brackets.) Grub is a bootloader, that is, a small program that is launched by your computer's BIOS and whose job is to load the operating system. hd0 references the first drive detected by the BIOS, hd1 references the second one. The second number is a partition number; Grub 1 starts from 0, while Grub 2 starts from 1. See “Naming convention” in the Grub manual if you want more details.
/dev/sda, /dev/sdb, etc, are the default names of hard disks (and other similar storage like flash disks of all kinds, but not CD or tape drives) under Linux. The last letter grows in the order in which the disks are detected. You may find /dev/hda, /dev/hdb, etc, on some Linux distributions. sd indicates that the disk driver uses a SCSI interface internally, while hd indicates that the driver uses an IDE interface. This is only an internal kernel matter, you can and often do have IDE disks appear as sd. The additional number is the partition number, starting at 1.
The partitions you're likely to encounter follow the PC partitioning scheme. A disk has up to four primary partitions, numbered 1 to 4 (or 0 to 3 in Grub 1). It may also have any number of logical partitions, in which case one of the primary partitions cannot contain a filesystem but must instead be an extended partition (a container for the logical partitions). Logical partitions are numbered from 5 on (from 4 in Grub 1).
The names of the device files (e.g. /dev/sda) used by Linux are in fact assigned by the udev program, and can be configured. This is typically useful in advanced situations involving removable media.
Most of the time, you don't need to care about device names. They are referenced in a very small number of places, typically only two: the bootloader configuration (as we've seen, Grub has its own names anyway), and the file /etc/fstab which lists the filesystems to mount on boot. (And even /etc/fstab does not always reference partitions by names like /dev/sda1.) What matters is mount points, that is, the location (directory) at which each filesystem is mounted.
Windows uses a completely different naming scheme which is hard to relate to the underlying hardware structure. c:, d:, etc, are assigned to partitions of a type that Windows recognizes in a particular order (and there are ways to influence this order). Wikipedia has the details.