Sachverhalt: A. Die 1967 geborene S._ meldete sich im Mai 2002 bei der Invalidenversicherung zum Leistungsbezug an unter Hinweis darauf, dass sie seit Januar 2002 wegen Rücken-, Nacken- und Kniebeschwerden arbeitsunfähig sei. Die IV-Stelle des Kantons St. Gallen klärte die gesundheitlichen und erwerblichen Verhältnisse ab, ermittelte einen Invaliditätsgrad von 0 % und verneinte gestützt darauf einen Rentenanspruch (Verfügung vom 1. März 2004). Daran hielt sie auf Einsprache der S._ hin fest (Entscheid vom 16. Januar 2007), nachdem sie selber weitere ärztliche Stellungnahmen eingeholt und von der Versicherten eingereichte zusätzliche Arztberichte zu den Akten genommen hatte. B. Beschwerdeweise liess S._ das Rechtsbegehren stellen, die Verfügung (recte: der Einspracheentscheid) sei aufzuheben und es sei ihr ab 1. Mai 2001 eine ganze Invalidenrente auszurichten. Eventualiter sei die Sache für ergänzende Abklärungen an die Vorinstanz zurückzuweisen. Gleichzeitig ersuchte sie um unentgeltliche Rechtspflege (Prozessführung, Verbeiständung). Mit Entscheid vom 18. August 2008 hiess das Versicherungsgericht des Kantons St. Gallen die Beschwerde teilweise gut, hob den Einspracheentscheid auf und sprach der Versicherten mit Wirkung ab 1. Februar 2006 eine halbe Rente der Invalidenversicherung zu. Es wies die Sache zur Festsetzung der Rentenhöhe an die IV-Stelle zurück. Des Weitern verpflichtete es die IV-Stelle, S._ eine Parteientschädigung zu bezahlen. C. Die IV-Stelle führt Beschwerde in öffentlich-rechtlichen Angelegenheiten mit dem Antrag auf Aufhebung des vorinstanzlichen Entscheides und Bestätigung des Einspracheentscheides. S._ lässt auf Abweisung der Beschwerde schliessen und ein Gesuch um unentgeltliche Rechtspflege (Prozessführung, Verbeiständung) stellen. Das Bundesamt für Sozialversicherungen verzichtet auf eine Stellungnahme. 