> First off, is there a way to restrict changes on SharePoint list until another value is set to True for example?
Yes. Create a flow that is triggered on item modification, and create a trigger condition for that which only runs if the status of X column is "True".
@equals(triggerBody()?['ExampleColumn'],true)
Then, in that flow, update the permissions for that item. I'm assuming you're talking about the item that has "true" on it, not the entire list.
I also need to comment on this: "in which order specific columns can be edited. " -- You can't lock down columns. It's the whole item, or none of the item. If that's needed, you'd have to go the PowerApp direction.
> Secondly, how would I go about creating a notification system for when each step is completed?
Well, based on what you're saying, for 30 columns you have a different set of people you want to notify / request to send out. You'd first make a list to use as a matrix. Like "Title" would be the column name, then "People" to notify, then "Task Assignees" or whatever for who you'd assign the task to for that change.
So then when your item is modified, you'd want to "Get Changes", and identify which column has been changed. You'd do a check for each of the 30 columns, then set a variable for the one that says "True", and then use that to filter your Matrix. That'll get you the details you need, and make it so you don't need 30 flows.
All this is very dependent on the full actual requirements, though.