A VLAN is an Ethernet level concept, a subnet is an IP level concept.
A VLAN splits an Ethernet network into multiple logically seperateseparate Ethernet networks.
A subnet defines which hosts a host will try to communicate with directly verses, versus which hosts will need to go via a router. It also defines "network" and "broadcast" addresses.
It is common practice to have a 1:1 mapping between subnets and VLANs, but it is perfectly possible to have multiple subnets on the same VLAN. Equally it is possible to use proxy arpARP to split a subnet between multiple VLANs or even have two VLANs using the same IP subnet for different purposes.