2. Knowing how the microprocessor works comes really handy while coding assembly as you can't 'catch exceptions' out there. It is like treading a land-mined area and nothing can replace the knowledge of the fundamental terrain- the architecture.
3. Since you know C, you can start with some serious gdb usage, as mentioned by @penberg.
4. Then find your sweet spot between these two ends. You could start with embedded robotics, another viable hobby could be IoT application. Two added advantages of these over 'theoretical' assembly language learning are that-
a) You are doing something with a real-scenario implementation, so you're surely hooked.
b) You can eventually mold a business model around it if you end up with something really innovative.