Come funziona: è scritto tutto nella documentazione.

La sintassi precisa per cosa? Di esempi di BufferedReader ce ne sono a bizzeffe su questo forum. Leggere da input... è ovvio, non si può leggere dall'output, ma solo dall'input. L'input, in questo caso, è un qualsiasi Reader (che, a sua volta, può essere costruito a partire da qualunque sorgente di dati).

Un semplice esempio per la lettura da standard input (la tastiera):

codice:
InputStreamReader isr = null;
BufferedReader br = null;
try {
   // Collego l'InputStreamReader alla tastiera
   isr = new InputStreamReader( System.in );

   // Collego il BufferedReader all'InputStreamReader
   br = new BufferedReader( isr );

   String linea = null;
   boolean fermati = false;

   // Leggo finchè l'utente non scrive "fermati"
   while(!fermati && ((linea = br.readLine()) != null)) {
      // Quello che ho letto, lo scrivo a video
      System.out.println("Hai scritto: " + linea);
      fermati = "fermati".equals( linea );
   }
} catch (Exception e) {
   e.printStackTrace();
} finally {
   if (br != null) {
      try { br.close(); } catch (Exception e) { }
   } else {
      if (isr != null) {
         try { isr.close(); } catch (Exception e) { }
      }
   }
}
Ciao.