Not really a low-level discussion, but ...
"The ODP.NET version you should use depends on the version of the Oracle client, not the version of the Oracle database server. For example, you should use ODP.NET version 10 with the Oracle 10i Client and ODP.NET version 11 with the Oracle 11g client. Additionally, since you can connect the Oracle 9i Client to an 8i database server, you can also technically use ODP.NET version 9 on an 8i database server."
[Source = Zehoo, E. (2010). Pro ODP.NET for Oracle Database 11g. U.S.A.: Apress.]
Hope this helps.
Basic principle is to use the Oracle Client version installed with ODP.NET. If you have more than one Oracle Client version on the same machine, ODP.NET may try to load another Oracle Client's DLL in the Windows Path. To avoid that, set the ODP.NET DllPath setting in your .NET config file to direct which Oracle Home bin directory to find its dependent DLLs in.