A security group is stateful and applied at the instance level; a NACL is stateless and applied at the subnet level.
This is correct. A security group applies at the instance level and operates in a stateful manner, automatically allowing return traffic. A NACL applies at the subnet level and operates in a stateless manner, requiring explicit rules for return traffic, and it can also configure deny rules. The scope of application and state management are the main differences between the two.