ADO is a later technology though some people say DAO is more
efficient.
ADO is not a "leter technology" except in the sense that it was
created after DAO already existed.
At this point, DAO is the more recent, since it is being updated for
use with ACE (though the Jet 4.0 version, i.e., DAO 3.6, is not
being updated any longer).
As to efficiency, DAO will always be more efficient with Jet/ACE
data because DAO is Jet/ACE's native data interface. ADO may or may
not be more efficient for other data stores (as compared to DAO used
with Jet/ACE using ODBC).
In general, ADO is not needed in an Access app at all. DAO should be
the default choice until an actual use case for ADO comes up for the
app in question. By that, I mean you need to do something in the app
that DAO doesn't do, or that ADO does much more efficiently. With a
Jet/ACE back end, there are almost no such tasks that would be
commonly used in an Access app. For SQL Server, it's more common to
have some ADO sprinkled throughout your app because of the
limitations of using stored procedures and other server-side
objects. For other back ends, I wouldn't know, as I have only ODBC
experience with them.