Top-level properties - это свойства, объявляемые в классе вне методов и, обычно, до них(но необязательно). Lazy property - свойство, инициализируемое лишь при первом доступе к нему при помощи ключевого слова lazy. Например: val instance by lazy { SomeClass() }