I'm on my way to work, so I don't really have time to reply and I may forget to reply later. So, what I can say quickly is you may want to check out my tutorial project on my website. The last example there is a bare bones game engine that can load models for rigid animation. Included in this DX11 Visual Studio Project (2013 I think it was), is the custom model exporter I wrote in Python to extract the model data from Blender.
You may also want to check out my HLSL series on my YouTube channel because that basically explains what data your model file actually needs to contain and why in at least an indirect way. Ultimately, your model data is just feeding the shader. So, if the shader doesn't use it, it's wasted at least in terms of what gets drawn to the screen. The HLSL tutorial doesn't do normal mapping, but it gets you right up to that point. It may be a bit more intermediate than beginner though. So, it may be one of those deals where you can watch it and learn what you can, go program for 6 months, and then come back and watch it again to get the most out of it.
You didn't say what platform you are on. The code is DX11. Except the HLSL stuff was written for XNA/MonoGame. Still, I have almost the identical shader to the last one in the series in my DX11 "engine". So, HLSL is pretty much the same on any platform and GLSL has totally different syntax but all the math is identical. And the math is like 90% of it, which is probably why you may want to watch the Matrix and Vector video before delving into the HLSL stuff.
Anyway, you pretty much need to master everything I've just given you before you even begin to worry about skinned shading, if you are going to do it yourself rather than just using an engine like Unity that does it for you. What I have there will do rigid animation (car wheels and simple stuff animated from code like that). Skinned animation uses everything you learn there and then makes it about 10 times more complicated.
Oh, I might also mention that my current (coding) project is to rewrite my whole engine in OpenGL 4.5 and GLSL. I'm about 20% done. Hopefully, I'll have code to post, if not a video explaining it, by this fall. I'm in an art program to learn to do game art right now, and that's consuming the vast majority of my time though.
And the only reason you need a face/triangle normal is to figure out what your vertex normals are. After that, you can throw them away unless you have a special use case. My custom model format is called PUNC (Position, UV, Normal, Color) because that's the vertex data it includes. UV for textures which means you may not use or need the color (it tends to be one or the other). And a vertex normal. That's enough vertex data to do pretty much anything starting out.