What is the difference between XGBoost, LightGBM, and CatBoost? When should one use which library?
XGBoost (pronounced "exclusive gradient boosting") is a machine learning algorithm developed by Microsoft Research in 2016. It uses an evolutionary strategy called  "gradient boosted trees".
The main advantage of this approach are that it can handle large amounts data very efficiently, making it useful for problems with big datasets such as image classification or sentiment analysis. However its drawback could be that it may need to have more memory than other algorithms like LGBM. 
LightGBM (pronounced "light gradientboosting") was also developed by Microsoft Research and released on GitHub in 2019. This library implements a light-weight variant of the original xgboost algorithm. The idea behind LightGBM lies on using a simplified model architecture where only the most important features are used during training instead of all available ones. Its performance has been reported comparable with XGboost but at much lower computational costs. 

CatBoost is a Python implementation of Gradient Boosted Trees from sklearn. They were introduced in 2014. Their goal isn't to replace XGBTs but rather provide a faster alternative.