Local Action: When you define a flow action, you can use it as Connector Action or as a local action. Local action will not advance the flow. You can take it as an action being performed when flow is in progress at that point in the flow.
for example if you are progressing in a flow and you want to increase urgency of the case, then use a local action(in which you can write the logic). once it increase the urgency, it will move to the place where actual flow left.
Optional Process: This is a seperate flow which will be triggered while you are in the middle of a flow. Lets take an example that, you are processing a customer new account opening record. Once you validate user and everything is ok, you want to send a letter to the user conditionally.. this wil be handled by the other dept. What you have to do is, you need to run this flow and send some request to them and they will take care of rest.
Then you will define an optional process for printing.. once you get that screen you just request for print letter conditionally. This is a seperate process and creates print work object. thats why you wil use optional process here. Once you are done with this you wil reach the main flow.