Welcome to the Atlassian Community.
While Test Sets address organization, Test Plans address planning. Thus, they have different purposes.
A Test Set is basically an ordered, flat list of Tests, grouped by any logical criteria (e.g., by business case, component, security, performance). You may have as many Test Sets as you want, and a Test may be included in multiple Test Sets. Test Sets are great if you want to have full control over certain groups of Tests. You can easily select them whenever you want (e.g., when creating Test Plans or Test Executions) instead of having to search individual Tests by hand. Test Sets can also be used to dynamically cover requirements.
A Test Set does not provide any direct information related with test results.
A Test Plan, on the other hand, tracks the results of some Tests in some version/sprint of the SUT. Thus, its purpose is to identify the Tests you want to run, to schedule executions for them and then group the respective results.
Thus, a Test Plan can be seen as a higher-level entity above Test Executions. It groups multiple Test Executions and presents a consolidated overview (i.e., the latest status) for the Tests tracked within it.
For a given version, or a given sprint, you may create one or more Test Plans to track the test results related to different tests (e.g., you may create a Test Plan for regression testing and another one for non-regression testing).
Tests can be scheduled for execution by creating assignable “tasks” calledTest Executions. They contain the list of Tests along with the recorded result (i.e., for each Test, the Test Execution contains a Test Run). They can be created in an ad hoc way or in a planned way (i.e., linked to some Test Plan(s)). The results of planned Test Executions will be visible and consolidated on the linked Test Plan(s).