devkitpro (https://devkitpro.org/) is the toolchain and base libraries, and sets up a package manager for downloading others.
For the basic stuff you can use the usual C libraries. I picked up a lot by reading and tweaking the examples, which are installed along with the toolchain: https://github.com/devkitPro/3ds-examples
libctru, installed with devkitpro (https://libctru.devkitpro.org/) is where a lot of the platform-specific APIs live. There are also some higher-level libraries built on top of it
A good understanding of ARM will take you a long way. A lot of what documentation there is (especially on 3dbrew.org) assumes you understand the terms and general architecture of an older ARM platform. This book https://www.brucesmith.info/arm-a32-assembly-language/ was great for building enough understanding that I could understand most of the official reference manuals. From those, I found the ARMv7 reference manual and the ARM11 MPCore Technical Reference Manual to be the most useful, and I refer back to the ARM instruction set reference card a lot.
Besides that, it's reading and modifying the source of other projects, and trying things out. If you look at homebrew apps like ctrQuake (https://github.com/masterfeizz/ctrQuake), you'll notice there's usually not a lot of platform-specific code -- most is just standard C / C++.
Hope that helps. Just like anything, it's knowing enough to get started (a toolchain, some C, and some examples) and using your questions and ideas to draw you into the next thing to learn.
For the basic stuff you can use the usual C libraries. I picked up a lot by reading and tweaking the examples, which are installed along with the toolchain: https://github.com/devkitPro/3ds-examples
libctru, installed with devkitpro (https://libctru.devkitpro.org/) is where a lot of the platform-specific APIs live. There are also some higher-level libraries built on top of it
A good understanding of ARM will take you a long way. A lot of what documentation there is (especially on 3dbrew.org) assumes you understand the terms and general architecture of an older ARM platform. This book https://www.brucesmith.info/arm-a32-assembly-language/ was great for building enough understanding that I could understand most of the official reference manuals. From those, I found the ARMv7 reference manual and the ARM11 MPCore Technical Reference Manual to be the most useful, and I refer back to the ARM instruction set reference card a lot.
Besides that, it's reading and modifying the source of other projects, and trying things out. If you look at homebrew apps like ctrQuake (https://github.com/masterfeizz/ctrQuake), you'll notice there's usually not a lot of platform-specific code -- most is just standard C / C++.
Hope that helps. Just like anything, it's knowing enough to get started (a toolchain, some C, and some examples) and using your questions and ideas to draw you into the next thing to learn.