I would recommend building something simple with nostr-tools to get started then (my first project was notebin.io). Maybe checkout ndk later. You might also consider spinning up your own relay for testing or personal notes so that you can see how it all works together, for that I'd recommend relayrunner.org. And for cli and local relay purposes I'd recommend nak.
https://github.com/nbd-wtf/nostr-tools
https://github.com/nostr-dev-kit/ndk
https://relayrunner.org/
https://github.com/fiatjaf/nak
I would say the things that I have found the hardest to get right on nostr are:
- caching
- batching
- relay UI/UX
- pagination
- counting
I can go into more detail if you wanna drill down on anything in particular.