"Why didn't substructural type systems catch on before Rust" is an interesting question I don't know the answer to, and the answer might just be "dumb luck".
Not that I know of! Lots of the terms are defined in course notes or textbooks, alas. This looks pretty decent on first glance: https://cs.cmu.edu/~janh/courses/ra19/assets/pdf/lect04.pdf… – requires some understanding of the notation (probably covered in earlier notes).
In type theory, the ‘structural rules’ allow variables to be substituted, reordered, and ignored. Substructural type systems restrict the usual structural rules in different ways, so they tend to be useful for managing resources. https://ncatlab.org/nlab/show/type+theory#structural_rules…