Olá Ingrid, tudo bem?
Você está certa! Instruções como for e if permitem que as chaves sejam omitidas, e caso façamos isso, o bloco da instrução será apenas a próxima linha de código do programa. 
Então, como você já deve saber, no caso do seguinte código, dentro de um método main:
if(1 != 2)
    System.out.println("2 é diferente de 1!");
System.out.println("Essa linha será sempre executada, não importa o resultado do if!")
O primeiro System.out.println nesse caso não será executado. E o segundo System.out.println sempre será executado. Apenas o primeiro System.out está dentro do bloco do if. O segundo não pertence ao bloco.
No caso do código que você postou, temos um for sem chaves, que dentro do seu bloco (que nesse caso é a próxima linha), possui um outro for. Esse segundo for, aninhado, também tem como seu bloco a próxima linha, um if e por aí vai.
É isso que ocorre: se na próxima linha de um for sem chaves você usa uma instrução de bloco (for, if, else if, else while...), ele terá seu próprio bloco na próxima linha...
Você pode identar o código para ficar mais claro:
class A {
    public static void main(String[] args) {
         fora: for(int a=0;a<30;a++)
             for(int b=0;b<1;b++)
                 if(a+b==25) continue fora;
                 else if(a+b==20) break;
                 else System.out.println(a);
    }
}
O código funciona e corresponde ao seguinte código:
class A {
  public static void main(String[] args) {
    fora: for(int a=0;a<30;a++) {
      for(int b=0;b<1;b++){
        if(a+b==25) {
          continue fora;
        }
        else if(a+b==20) {
          break;
        }
        else {
          System.out.println(a);
        }
      }
    }
  }
}
Faz sentido?
Abraço.