Well, it's been a long time since I've dealt with C, but as you know, a For loop will run everything inside it at least once. If you want to do something multiple times for each of the For iterations, you use a nested For. It can be good for displaying or dealing with 2d and 3d tables of information (rows and columns).
The simplest way of showing this is a table of 5x5 squares. Each of those squares has a 2 position ID that represents the position it's in. First part of the ID represents the column. Second ID represents the row. Start off from 1, counting to 5 to the right. 1 counting to 5 to the bottom. So the first square is 1,1. The next to the right is 2, 1. The next down is 1,2. And so on.
Sort of like this:
1,1 - 2,1 - 3,1 - 4,1 - 5,1
1,2 - 2,2 - 3,2 - 4,2 - 5,2
1,3 - 2,3 - 3,3 - 4,3 - 5,3
1,4 - 2,4 - 3,4 - 4,4 - 5,4
1,5 - 2,5 - 3,5 - 4,5 - 5,5
Now, let's say you want to display every value in that table. You can do a printf for each cell in there (25 lines). Or you can use a 2 layer nested For loop (3 lines or so). Layer one goes through each row down. The second layer goes through each column across.
for i = 1 to 5, i++
for j = 1 to 5, j++
You can tweak the conditions to display different ways (say for example Even or Odd cells only, or in reverse, etc). But anytime you want to do a mass thing to a matrix table, a nested for can be handy.
This isn't the only thing it's useful for, but it's a good example.