What is the best way for an end user to get all the contact and activity data from the database?
The difference in counts might be explained by the fact that at one time Find Activities only returned results where the With Contact field wasn't empty, and a quick check on the public demo suggests that's still true.

That also seems true for Advanced Search.

You can also try Search Builder, but the list of fields is minimal.

If you're using Drupal, you could try creating a View on the Drupal side that lists the activities.