No, c'è un po' di confusione: il margin: 0 auto; centra l'elemento a cui viene applicato. Se vuoi applicarlo sia al div che al container, devi darlo ad entrambi.
Il text-align: center invece serve per risolvere un bug di Internet Explorer e va applicato a chi contiene l'elemento da centrare. Vediamo due esempi partendo dal medesimo codice HTML:

codice:
<body>
  <div id="container">
    <div id="centrato"></div>
  </div>
</body>

Se desideriamo posizionare al centro <div id="centrato"></div> (relativamente alla dimensione di #container), faremo così:

#container {
text-align: center;
}
#centrato {
margin: 0 auto;
text-align: left; /* Annulliamo il precedente text-align*/
}


Se desideriamo centrare anche il #container, il css diventerà così:

body {
text-align: center; /* il contenitore di #container è il tag body */
}
#container {
margin: 0 auto;
}
#centrato {
margin: 0 auto;
text-align: left; /* Annulliamo il precedente text-align*/
}

Il float serve invece per allineare un box a destra o a sinistra, svincolandolo parzialmente dal flusso degli elementi della pagina (ossia dall'ordine in cui sono inseriti). Per capire meglio questo concetto ti consiglio di seguire la guida di html.it sui css :)