Both 未満 and 不足 have the meaning of insufficient in JMDict. What is the difference in their usage?
未満: it expresses value. e.g. 20未満 means 'less than 20 years old'. 彼は友達以上恋人未満 means 'He is beyond a friend but not to the level of a boyfriend.'
不足: It expresses status. It is necessary indeed, but it is insufficient now (and you would like to fulfill soon.). e.g. 勉強不足 means 'you have not studied enough and you have to study more'. ビタミン不足 means 'You have a sub-optimal level of vitamins' (because you have not taken in enough vitamins).