1.
<?php
if(isset($_POST['scelta'])) $scelta = $_POST['scelta'];
else $scelta = '';
?>
Serve ad inizializzare la variabile scelta... potresti anche solo mettere:
Codice PHP:
$scelta $_POST['scelta']; 
perchè il php è molto clemente, quindi riceveresti solo ei warning o notice, cioè non errori che bloccano l'esecuzione del programma. Il fatto è che quando accedi per la prima volta al form la variabile $_POST['scelta'] non è settata, non esiste, e quindi non sta bene assegnarla a $scelta, per questo prima controllo che sia stata settata, e se è così la assegno, altrimenti setto $scelta come '', avrei anche potuto settarla come null.

2.
<?php
if($scelta=='Scelta 1') $selected = "selected=\"selected\"";
else $selected = '';
?>
Questo l'ho messo per far si che quando uno fa il submit del form e ritorna alla stessa pagina veda selezionata la vode del select che aveva scelto prima, per cui per ogni voce del select controllo se $scelta è uguale a tale voce, in caso affermativo scrivo l'attributo seleted="selected" (che immagazzino prima in una variabile, cioè $selected) all'interno del tag <option>, e lo faccio proprio con:
3.
<option value = "Scelta 1" <?php echo $selected ?> > Scelta 1</option>
infatti se la opzione non è quella selezionata all'invio del form avro
<option value="Scelta 1">Scelta 1</option>
altrimenti
<option value="Scelta 1" selected="selected">Scelta 1</option>
e me la ritrovo selezionata.

4.
<?php
if($scelta) echo "Come si vede dall select, è stata selezionata la scelta: ".$scelta;
?>
viene stampata la scelta, ma in questo caso serve l'if? non bastava mettere l'echo? (l'if in questo caso va a vedere se la variabile "scelta" contiene valori?
Esatto, stampo la frase solamente se è stata effettivamente effettuata una scelta, altrimenti non scrivo nulla, quindi ad esempio al primo accesso alla pagina non stampo nulla visto che non si è ancora compilato il form.
Poi uso semplicemente if($scelta) anche qui perchè il php è molto "buono" in queste cose, infatti non richiede che il controllo sia per forza un dato di tipo booleano, va bene anche se è una stringa, in questo caso stringa vuota = falso, stringa non vuota = vero.

Ciao