put in print statements to see what is really going on. I changed your second nested loops to this (and am completely ignoring the first set of loops here):
and you get this:
C:\slop>java Stars
row: 2, star: 2
*row: 1, star: 2
*row: 1, star: 1
*
you come in, and both row and star are set to 2. you print the first star.
star gets decremented to 1. we
test star >= row, which is false, so we exit the inner loop.
row is decremented to 1. 1 is > MIN_ROWS, so we enter the inner loop
star is set to 2.
star > row is true (2 >= 1), so we print again. we decrement star, making it 1.
we go back to the top of the inner loop, and check if star >= row (1 >=1), which is true, and we print another star (the 3rd one).
star is decremented to 0. 0 is NOT >= 1, so we exit the inner loop.
we decrement row, making it 0. 0 is NOT > MIN_ROWS, so we exit the outer loop.