"CreateNewTimePeriod" is actually used often. The best way to understand the differences is to apply a scenario to it. I'll use some made up examples/numbers.
You have a customer A with one active address record:
LogisticsPostalAddress.Address = "123 South St, Chicago, IL"
LogisticsPostalAddress.RecId =52565480000;
LogisticsPostalAddress.ValidFrom = DateTimeUtil::minValue();
LogisticsPostalAddress.ValidTo = DateTimeUtil::maxValue();
Let's say you have a SalesOrder SO123 that you shipped to Customer A at address "123 South St, Chicago, IL" (RecId 52565480000) on 1/1/2016.
Later, the customer calls you and asks you to update their address to "321 North St, Chicago, IL". Well for audit/history purposes, whenever you look at SO123's packing slip, you want to know it was shipped to 123 South St. So CustPackingSlipJour.DeliveryPostalAddress = 52565480000.
When you update the 52565480000 record, the state is by default "CreateNewTimePeriod", and when you save the record it does an Update then Insert, where the update expires 52565480000 (ValidTo = DaetTimeUtil::utcNow()), and the insert creates a new record with [ValidFrom = DateTimeUtil::utcNow(); ValidTo = DateTimeUtil::maxValue();]
"Correction", would be if you wanted to change an address and have it be persisted everywhere that the address was used, or sometimes when you're working with an address record, it's saved at various points and you don't want to keep creating new records when the user isn't finished working with it.
"EffectiveBased" means that if you wanted to modify both expired records (where .ValidTo < utcNow()) and effective/active records (where .validFrom()<=utcNow() && .validTo()>=utcNow()) in some sort of process, then it'll do "Correction" actions when the record is still an effective date, but will do CreateNewTimePeriod and create a new address record when it's no-longer active to persist historical addresses.