But this post explains it the most clearly I've ever seen:
The general idea being that:
- /dev are hardware devices attached to the system where udev is the tool that performs detection and addition of these devices.
- /sys represents that path of how these physical hardware devices are attached to the system. Such as how a device is mapped PCI device path. It is basically a representation of how things are "plugged in"
/proc and /sys have kind of merged functions according to this post - http://serverfault.com/questions/65261/linux-proc-sys-kernel-vs-sys-kernel
libudev and Sysfs Tutorial - http://www.signal11.us/oss/udev/