There are many programming paradigms I know, but there isn't exact number on which programmers agree, a lot of groupings exist. I would say following are programming paradigms: Assembly, Procedural, Object Oriented Programming (OOP), Functional and Concurrent programming paradigm. Sometimes people don't count concurrent programming as programming paradigm.
Let's start with Assembly - assembly is paradigm for exact set of instructions running. You can write functions but essentially program executes linearly, if you want to write some logic and execute different command or call function you have only "GOTO" option, there isn't "while", "for" concepts. Also in assembly paradigm you have to tell computer to move, load, get data from AL, registers or memory - it's similar to machine language.
If you take a look at Procedural paradigm, I would explain like this: We have many encapsulated functions - that can be called from main function or other procedures. First programming language i have learnt (when I was 10 years old) was Basic, then Pascal and C languages later years. These languages doesn't have classes, but more control over memory managment. Still using procedure paradigm - C language to program micro controllers.
The last one in my list is Concurrent programming paradigm, it's a little bit different from others, because here we program threads that runs in parallel. It's really useful when we program network applications, that should act as a separate program (thread), wait until it gets processor time and run what it needs to complete. It's really useful when we program server that creates threads for each task or group user interactions together (for example in a game). But it has one main problem, when 2 threads want to manipulate same resource at the same time there can be a incorrect data or deadlock. Because of that we have to decide where we should use that paradigm and create correct transaction models. I have used this paradigm only with Java, but other languages like C, C++, C# etc support this.
There is another question which paradigm is best? - there isn't any clear answer to that question, if you program just uses concrete set of steps you can use assembly (if you need state as well procedural), if your programs has 100% real world analogy - then answer is oop. But if you need to program some abstract things like validation, transaction, event handling or you need to chain functions we should use functional paradigm. If you need program that runs in parallel or some tasks that should be run periodically without stopping main thread from execution, the answer is concurrent programming paradigm.