1) Quando inizi una transazione sei dentro la transazione fino a quando non arrivi alla sua chiusura (commit o rollback), quindi anche se ad un certo punto chiami un metodo di una classe esterna che esegue una sua query, questa risulterà all'interno della transazione.
Se invece intendi che un utente esegue un'operazione che richiede una transazione ed un secondo utente invece esegue un'operazione che non richiede una transazione, ma opera su una o più tabelle utilizzate anche dalla transazione del primo utente, allora stiamo parlando di concorrenza e va gestita con le lock, ovvero si blocca la lettura/scrittura o solo la scrittura (a seconda delle esigenze) sulle tabelle "critiche" e finché queste tabelle non vengono sbloccate, le nuove richieste di accesso restano in attesa.
2) Qualsiasi problema, se non gestito tramite eccezioni, provoca il fallimento della transazione.
3) Se il campo in questione è una chiave primaria o un campo unique, allora se non gestisci l'eccezione la transazione fallisce ed eseguirai il rollback, ovvero vengono annullati tutti i cambiamenti apportati dalle precedenti query interne alla transazione.