Hi, my degree is in computer science and I have good bit of experience doing embedded stuff and reverse engineering and the like.
The short answer is yes, you need to know how to implement a binary tree (including the red black variety) and a handful of other common data structures (linked lists, buffers of various types, hash tables, etc) because just about every company will ask you to do this as one of their interview questions. 
Binary trees are not as common as buffers or linked lists, but you definitely see it pop up.
So in that respect, it’s not a waste of time.
Will you ever need to hand implement a binary tree? In my experience, rarely to never. But it also depends on how interesting of a project you’re working on.
The long answer is, in my opinion, an even stronger yes.
The subtlety here is that the point of learning all these data structures in and out by implementing them yourself isn’t actually about learning those data structures. You aren’t learning to create a binary tree from scratch to know how to, well, create one from scratch.
What you are learning is how things like pointers and memory management can be used to do some pretty clever things. You are learning how to think in the right mindset to solve the sorts of problems one is often tasked with in the embedded space.
If you are having difficulty with binary trees, then that should be your single strongest indicator that you do need to learn how to create them. Not for the binary tree itself necessarily, but because programming is often a series of “aha!” light bulb going off moments where some abstract concept clicks into place. And learning about these data structures is a great way to force these moments of understanding to occur.
It also makes it a bit frustrating, because often it will feel like you just can’t figure it out and you aren’t making any progress. I think this is something most people experience when learning this stuff for the first time. I would implore you to not give up and keep banging your head against the wall. It isn’t fun and there is no sense of getting close. But one day, possibly in the shower or when eating lunch or even possibly while writing code, your brain will suddenly just “get it”.
And after that, you’ll have a very different perspective and see binary trees as easy and trivial even if they seemed very difficult as recent as yesterday.
THAT is the real reason to learn these data structures and it is difficult to see the value in this until after you’ve already come to understand them.
But I’ll put it this way: if you have difficulty with these various “benchmark” data structures, even if only one or two, then that means you still have some learning to do. Each one of these “aha!” moments is analogous to gaining a new tool, albeit in the form of insight into how to program and solve problems in this space. You need to have all of these tools available and once you do, none of those data structures will be challenging to you anymore - they’ll just be understood and useful tools.