How can I see the number of memberships at a given date in the past?
While there might be more elegant solutions possible with Reports (?), you can get the count using an advanced search:

Select Search | Advanced Search from the menu
In the Basic Criteria section select Display Results As: Memberships
In the Memberships section of the search form set Start Date to Choose Date Range and then set To to the date you are interested in (for your example 31/12/2014). Leave the From field empty.
Also in the Memberships section set End Date to Choose Date Range and then set its From to the day after the date you are interested in (for your example 01/01/2015). Leave its To field empty.
In the Memberships section you can also check the type(s) of membership you want to be retrieved.

After you run that search, CiviCRM is displaying the number of results - which is the number of active memberships at that point in time.

Next to the number of results it is also listing the search parameters used. For double checking, this is what it shows when I run it:

993 Results - Memberships
Start Date - less than or equal to &quot;31. December 2014 11:59&quot;
...AND...
End Date - greater than or equal to &quot;1. January 2015 12:00&quot;


Explanation
This search is filtering memberships that started any time before (Start Date To) 31/12/2014 and did not end before 01/01/2015 (End Date From).
If you are using the memberships in a way that is correctly updating the Start and End date of the memberships, this should return the correct results.