Subnets are subdivisions of a Class A, B, or C network. They allow a single Class A, B, or C network to be used instead of multiple networks.
VLAN's are simply devices that are connected logically rather than physically (either through the port they are connected to or their MAC address).
The way VLANS communicate depends on a couple of different things. If multiple devices are in the same VLAN and are on the same switch, Layer 2 switching occurs, which pretty much means the switch handles it. If one device on one switch needs to communicate with another device on a separate switch (and they are in the same VLAN), a trunking protocol is used (ISL or 802.1q). This simply adds an extra piece to the header that clarifies what the VLAN ID is.
Now, if a device on VLAN A needs to talk to a device on VLAN B, a router or a layer 3 switch is needed (a switch with built in routing features).
VLANs are useful for administrative ease, security, reduced broadcasts, and to separate specialized traffic from each other (by department, group, etc)
Source -
http://www.proprofs.com/forums/index.php?showtopic=4452