Here is my take using traditional join syntax:
SELECT rocks.name,
       rocks.latitude,
       rocks.longitude,
       rocks.indoor,
       rocks.address,
       rocks.phone,
       rocks.email,
       rocks.website,
       rocks.closed,
       rock_types.type
FROM   rocks,
       rock_types
WHERE  rocks.latitude  > -180                 AND
       rocks.latitude  < 180                  AND
       rocks.longitude > -180                 AND
       rocks.longitude < 180                  AND
       rocks.type_id   = rocks_types.id       AND
       rock_types.type IN ('DWS', 'Top rope')
The rocks.id = rocks_types.id does the link between both tables.
Here is how you can write the same query using INNER JOIN (both leads to the same result)
SELECT rocks.name,
       rocks.latitude,
       rocks.longitude,
       rocks.indoor,
       rocks.address,
       rocks.phone,
       rocks.email,
       rocks.website,
       rocks.closed,
       rock_types.type
FROM   rocks
       INNER JOIN rocks_types ON rocks.type_id = rocks_types.id
WHERE  rocks.latitude  > -180                 AND
       rocks.latitude  < 180                  AND
       rocks.longitude > -180                 AND
       rocks.longitude < 180                  AND
       rock_types.type IN ('DWS', 'Top rope')
EDIT: Based on your comment, the following will give you a comma separated list of types:
SELECT rocks.name,
       rocks.latitude,
       rocks.longitude,
       rocks.indoor,
       rocks.address,
       rocks.phone,
       rocks.email,
       rocks.website,
       rocks.closed,
       (SELECT    GROUP_CONCAT(DISTINCT rock_types.type SEPARATOR ',')
        FROM      rock_types
        WHERE     rock_types.id = rocks.id                AND
                  rock_types.type IN ('DWS', 'Top rope')
        GROUP BY  rock_types.id
       ) AS type
FROM   rocks
WHERE  rocks.latitude  > -180    AND
       rocks.latitude  < 180     AND
       rocks.longitude > -180    AND
       rocks.longitude < 180