Training data is used to adjust the parameters of the model, e.g. NN architecture. The aim is to reduce bias or your predictions (i.e. to fit the data).The validation set (also called dev set) is applied for hyper-parameter tuning (regularization, early stopping, drop-off, learning rate…) to reduce variance, i.e. improve the generalization capacity of your model (eliminate over-fit).
The validation data is not seen by your model during training.Test data is used to provide an unbiased evaluation of a final model. It is not seen by your model at all. Test data should be your real-life data.Test data and validation data should come from the same distribution. For train data you can you various data augmentation techniques