"Difficulty attempts to keep the block rate to 1 block every 600 seconds. A retarget (when a new network difficulty occurs) happens every 2016 blocks."
Is this in perpetuity. Is that written in stone? Is there any leeway written into the protocol for instances of unpredictability?
It's the protocol. It's designed to accommodate unpredictability. I should also add that there are limits to the above; difficulty can only rise by a maximum of 4x after a retarget (which has happened once, in July 2010) and decrease to a minimum of 1/4 after a retarget. For example, even if 2016 blocks takes longer than 56 days, difficulty cannot decrease to any less than 1/4 of what it was.
It's possible to change it, but it would be a fork and a majority of clients would need to accept it.
Just wondering, because I have also read that they actually have a date +/- when the last block will be solved. That to me indicates a finite solution. What happens then?
I think you might have misunderstood what you read. There is no "last block" planned - that would mean a planned end to bitcoin.
Maybe you mean when the last block reward is estimated to occur?