Je copie-colle l'explication courte (suffisante pour comprendre l'idée ou pour un mémo) :
abstract, open, final, sealed, override: drive inheritance, obviously affect the language
enum: alters the syntax of the declaration (allows enum entry list)
annotation: alters the syntax: annotation classes have no bodies
inner: alters scoping: members of outer class are accessible
private, public, internal, protected: regulate visibility, affect name/overload resolution
out, in: affect subtyping
vararg: affects use-site syntax, types and overload resolution
companion: affects both use-site and declaration-site syntax
lateinit: affects the syntax: initializer is forbidden, no definite-assignment checks are performed
inline, noinline, crossinline: affect possible usages of local returns etc
reified: affects possible arguments and uses of a type parameter inside
tailrec: affects allowed contents of a function
external: affects syntax: non-abstract function with no body
data: affects the set of members of a class, inheritance rules etc