When is SPI.beginTransaction required? I have been gradually converting many devices from i2c to spi for various reasons.  I noticed in tutorials like this from arduino.cc that SPI.beginTransaction is explicitly called out.  Then they link to examples such as this and this where they don't use SPI.beginTransaction.  In working through my own devices I found that I could often (almost always) forgo the use of SPI.beginTransaction.  The only case where I found problems was when I had 2 devices that used different SPI settings.
I went to Google and other searches for a simple reason for SPI.beginTransactions and found discussions of interrupts and locks and settings.  There was much discussions about users applications wrapping all calls with SPI.beginTransaction and SPI.endTransaction.  There were bugs when libraries didn't wrap everywhere.
This leads me to the conclusion that making calls to SPI.beginTransaction are only needed when the SPI settings need to change, but in practice you should always do it.  Is there documentation or examples that definitely state the purpose and proper (best practice) usage of it?
It appears calling the method beginTransaction() prevents additional SPI transactions from interrupting the current transaction.  Calling endTransaction() allows access to the SPI hardware again. This added complexity may sound odd.  Especially in the simple Arduino sketch-writing paradigm.  But as programs grow in complexity, more SPI devices are added and interrupts are used to quickly access SPI devices - the likely hood of SPI contention increases.
In the SPIClass source code, there is this comment immediately before the beginTransaction() method:
  // Before using SPI.transfer() or asserting chip select pins,
  // this function is used to gain exclusive access to the SPI bus
  // and configure the correct settings.

So, it may be, that if the sketch-code is particularly well behaved and does not need protection from accidentally using the SPI hardware from multiple concurrent transactions, that these two methods need not be used.  But why take the chance.