Authentication using PDO
Efficiency

You currently perform three queries:


check if a user with that name exists
get salt for that username
check if user with that username and password exist


You can perform all these actions with one query:

SELECT salt, password FROM users WHERE username = :username LIMIT 1;


Then just hash the supplied password with the salt from the db, and compare the result to the password from the db. It might look something like this:

if (hash_equals($grabUser-&gt;fetch()['password'], $this-&gt;core-&gt;blueHash($password, $grabUser-&gt;fetch()['salt'])) {
    echo 'valid password';
}


Return Early

If you negate your if clauses, you can safe one level of nesting, which I think results in more readable code, because nesting decreases readability, and because it's clearer to what if clause the else clause belongs. Eg:

if(!($grabUser = $this-&gt;db-&gt;prepare($prefix.$type.$suffix))) 
{
    return array(0,0);
}

$grabUser-&gt;bindParam(":username", $username, PDO::PARAM_STR);
$grabUser-&gt;execute();
if(count($grabUser-&gt;fetchColumn()) &lt;= 0)
{
    return array(0,0);
}


Misc


it's unclear why you are returning an array. It seems to always contain [1, $userPassword]. Why do you need to return the password? And wouldn't it be easier to just return true or false instead of 1 or 0 inside an array? At least I would add a PHPDoc style comment explaining what is returned.
I would extract some of the code to its own function to increase readability and avoid duplication. eg you could have fetchFromUser($columnName, $username).
I don't know what password hashing you currently use, but I would think about switching to bcrypt. It's easier to use (you don't have to manage salts, etc), and is currently considered secure.