man pages and documentation are the original sources of knowledge on any tool or language. good documentation involves tutorials to get one used to the tool. then there are some good books on the topic.
manpages, documentation and books can be outdated though. so it's important to read them with a grain of salt and if something doesn't match then looking at the code is the next best step. looking at code (eg: oss projects) comes in quite handy when learning some new language or library as it takes you beyond the tutorial.