You cannot mix ? bindings and :param bindings in one prepared statement.
So, you need something like this:
$location = array("England", "America", "Australia");
$qMarks = str_repeat('?,', count($location) - 1) . '?';
$location[] = (int)$limit;
$location[] = (int)$offset;
$sql = $conn->prepare("SELECT * FROM adverts WHERE location IN ($qMarks) AND status = 2 LIMIT ? OFFSET ?");
$sql->execute($location);