The Cache API is a powerful feature of Drupal, but it might be hard to figure out how to use it correctly. Over time I have seen different ways to do it, but I believe there is a method better than others.
Drupal implements its own Javascript API. Most of the time, all code should use behaviors that trigger every time something changes on the page - page loaded, ajax request, and so on. On the other hand, it causes issues with code executing more than one time.
Logging is convenient for storing information about important events in the application. You could use it to find out if any errors occurred, debug issues, and any other important information. In this article, you can find an example of creating and using it in dependency injection.
Tables can be hard to make responsible. Bootstrap, for example, needs a special div wrapper, but it's not easy when dealing with CKEditor. Here you can find the filter plugin that created div around table elements.
Drupal shows all taxonomy term pages as publicly available and lists all related content. In this article, you will find an event subscriber to deny access by default and hook implementation to enable it for some taxonomy terms.