Non posso darti una spiegazione molto dettagliata, ma a grandi linee
le informazioni sono queste :

- RecordsetOpen.CursorLocation = adUseClien(t)
A che cosa serve ?

Quando si crea un recordset con ADO, puoi scegliere se crearlo
nell'applicazione Client o nell'applicazione Server.
Anche se utilizzi solo un PC il server č la DLL di ADO che estrae
effettivamente i records.
Se imposti .CursorLocation = adUseServer ottieni il recordset nella
area di memoria della applicazione Server (la DLL di ADO).

Se imposti .CursorLocation = adUseClient ottieni il recordset nella
area di memoria della applicazione Client (La tua Classe).
Solo in questo caso ottieni una replica fisica dei records nel tuo
recordset che puoi 'svincolare' dalla connessione.


- Set RecordsetOpen.ActiveConnection = Nothing
Se imposto la connessione di un recordset a nothing poi la posso
riaprire per fare degli aggiornamenti ?

Si.
Immaginiamo che hai un solo record e un solo campo in RecordsetOpen.
codice:
' Dopo la disconnessione puoi editare il campo : 
         RecordsetOpen.MoveFirst
         RecordsetOpen.Fields(0).Value = "NuovoValore"

' Per aggiornare il DB 
' Riapri la connessione. 
         Set DBConn = New ADODB.Connection 
         DBConn.Open strConnessione

' Riconnetti il recordset.
         RecordsetOpen.ActiveConnection = DBConn

' Esegui l'aggiornamento.
         RecordsetOpen.UpdateBatch 
' A questo punto hai l'aggiornamento. 

' Per essere sicuro che RecordsetOpen sia sempre coerente col DB
' potresti rieseguire l'estrazione
Ciao,