Jumps and Loops
So, just be clear here, you have four user tasks which, with some limitations, can be completed in numerous sequences. Specifically, there’s 1) Create List, 2) Test List, 3) Set List Details, and 4) Display List. Obviously, the user has to create a list before doing anything else with it. Maybe there are some other limitations, such as the user cannot (or generally does not) set list details without testing the list first, but for the most part, the sequence is open. Maybe a user creates a list then tests it, then creates another one then tests it, or maybe a user creates a couples lists, then tests them each. Things like that.
Getting unstuck on a suboptimal
You’re gravitating to something like a wizard, but recognize that wizards are only good for a single linear path through the various potential steps, not this jumping around and repeating of steps in unpredictable sequences. As a designer, to get un-fixated on a particular design alternative (like wizards), focus on why you like the alternative, not what the alternative is.
You say a wizard allows the users “see what step [the users] are in a process and that each step is helping build the end result.” Wizards indicate the current step by the window or page the user sees at the moment. So how else can you indicate a step than by changing the entire window/page? A wizard itself is actually not too good at indicating progress. You have to add “Step 3 of 5” or equivalent graphic to each window/page, and sometimes you can’t because the wizard may take the user down various different branches of different lengths depending on user input to previous windows/pages. But the question for you is, how can you indicate progress, whether or not it’s a wizard?
You may have recognized another problem with a wizard for this context: they only work on a single entity (a list, in your case). However, your users have multiple entities each which may be at a different step of processing at any given time (maybe there’s even some looping back to earlier steps for some). You need to track status and progress on each list.
If not a wizard…
Now that we’ve gotten away from wizard and back to what the users really need, the solution should be clearer. I think you need a dashboard. You need “home” window that displays a summary of the user’s work. It would likely be a table of the user’s lists with fields/cells that summarize or aggregate 1) what’s on each list, 2) how the list performs, 3) what details/settings it has, 4) where it’s displayed. You can have a small control in each cell to launch the appropriate app for the corresponding list to complete (or re-do/modify) the step.
The cells are blank if the user hasn’t done a particular step on a list, providing a graphically obvious and intuitively clear indication of the step and progress of each list. The order of the cells “suggests” the order to do the steps, without locking the user into that order (if you have to restrict the order, dynamically disable the controls that launch the apps as necessary).
Making the most of it
Preferably each cell in the table will, not only indicate if a step was completed, but how it was completed. Cell 1 could be sample tags of the list, or a count of tags (if that’s useful), Cell 2 could provide a weighted average of performance measures or maybe a sparkline, and so on. Depending on your screen size and the number of lists users generally have (and thus the size of each cell), you may be able to put full details of the step in the cell (e.g., performance on all tests). Putting such content in the cells will help users distinguish lists and maybe help them decide if they want to re-do certain steps.
As much as possible, the “apps” should be integrated with the dashboard/home page to limit navigation and orientation overhead (unlike a wizard, which could automatically take the user to the next app, your users need to explicitly pick the app and list from home/dashboard, since it’s not predictable). How much you can do this depends on the complexity of the UI of each app. For example, rather than an “app” to set list details, you can show the list’s settings in master-detail relation: edit-in-place controls below the table of lists shows the current settings for the currently selected list. No need to explicitly launch the Details and Settings app. Of course, this only works well if the list settings are relatively few and you can afford to take some screen space away from the table of lists.
As another example, clicking on the Performance control could open a simple dialog of test parameters and a button to execute the test and close the dialog; the results appear only in the cell (if they fit), eliminating the need to navigate back from the Test and Performance app results page to the home/dashboard page. If the test runs quickly (< 0.5 seconds) and the parameters of the test tend to be fixed between lists and sessions, let the user set them in Options/Preferences and automatically run the test whenever the user creates/edits a list. No need explicitly launch the Test and Performance app. Sophisticated processing doesn’t necessarily need a complicated UI.