How would I got about texturing low poly models like this?:

Everything in one diffuse map, so no PBR workflow.
Can someone give a list of topics/concepts/techniques I need to learn in order to create detailed textures like this for low poly characters?
Also what software would make the most sense for this task.
I already have modelled a low poly character so my current task is to texture it.
Thank you ?