About the definition of "soft label" and "hard label"
According to Galstyan and Cohen (2007), a hard label is a label assigned to a member of a class where membership is binary: either the element in question is a member of the class (has the label), or it is not.

A soft label is one which has a score (probability or likelihood) attached to it. So the element is a member of the class in question with probability/likelihood score of eg 0.7; this implies that an element can be a member of multiple classes (presumably with different membership scores), which is usually not possible with hard labels.

One use of soft labels in semi-supervised learning could be that the training set consists of hard labels; a classifier is trained on that using supervised learning. The classifier is then run on unlabelled data, and adds soft labels to the elements. This enlarged data set is then used for further training, where the algorithm can treat hard and soft labels differently.