Yes, your explanation is correct. 
Therefore you could still use lists and dicts, if you explicitly don’t want to register the content inside the module.
A bit unrelated to this, but self.param = nn.Parameter(...) and self.register_buffer will register the parameters/buffers properly, while a simple assignment of a tensor (self.tensor = torch.tensor(...)) will not.
Feel free to ask, in case something is unclear or you want more information.