For smart contract development, what is the difference between Openzeppelin SDK and Truffle? When should I use one or another, or both together?
OpenZeppelin Contracts: library of SmartContracts, that can be inherited and used to develop upon;
OpenZeppelin SDK: is former ZeppelinOS, it is SDK to help development process;
Truffle SDK: is well-known SDK to help development process as well. Besides SDK Truffle has other great projects as Ganache.
Spend some time to read documentation - it is very clear documented.
PS: ZeppelinOS was first SDK, that allowed to develop Upgradable Smart Contracts - really cool (https://medium.com/coinmonks/how-to-create-an-upgradeable-smart-contract-using-openzeppelin-sdk-example-of-fixing-smart-260dfbfd5bae)