There are alot of things that go into determining what a cruise line will do when a storm causes them to arrive late in port or return to port earlier. Depends on where the storm is coming from, where it's going to, where the ship is headed, where can it divert to, etc, etc.
Normally, a ship that is out to sea will not come back to port early. It's usually safer for them to remain at sea out of the path of the storm and come in a day later.
But this is one of the major reasons why it's so very important to purchase travel insurance. Any out-of-pocket expense you incur will be reimbursed by the insurance company.
As for what the cruise line will provide, again, it really depends on the circumstances - each case is different and each cruise handles things differently.
For example, we had a client who was on a ship that was out to sea and came in two days late, so they got to cruise for 2 more days for free. The cruise line, RCCL, provided them some onboard credit and paid the fee to rebook their airfare.
We had another client who was going out on that same ship the next week. So they had to stay in a hotel for two nights, which RCCL would not pay for, but luckily they had purchased the travel insurance so that took care of their food and lodging for two days. When they got on the ship, RCCL refunded them two days of cruise fare, plus gave them onboard credit, and a 50% discount towards another cruise.
In other words, there are no simple answers to your questions because there are too many variables involved.