I would suggest that you learn using simpler scripts.
phpBB is a complex forum, and its code structure would be very difficult to understand when you're still struggling with the basics.
Later, when you are better equipped, you should then come back and analyse the code of phpBB.
Anyway:
obtain_word_list() returns true if nothing goes wrong.
This true value is a status code that tells (or can tell) the main script (or rather the 'caller', i.e. the code portion that called (or invoked) this function) whether or not it is successful.
If it is not successful, obtain_word_list() does not return a false value (or any value at all, apparently).
Rather, it invokes the message_die() function, which presumably is some user defined error handling function that gracefully prints an error message to the phpBB user, and then ends the script.
Since the script ends here (if unsuccessful), it then could be the reason why obtain_word_list() does not return a value if unsuccessful - it would never get the chance anyway.
For the next function:
There are multiple return values, but only one is used for each invocation of the function.
Consider:
if ( !($result = $db->sql_query($sql)) )
{
return false;
}
If $db->sql_query($sql) returns a false value, the function returns false.
It returns false to the caller, hence passing control back to the caller.
This means that the rest of the function is not evaluated, hence the next return statement is never used.
On the other hand, if $db_query($sql) returns a true value, control bypasses this return statement, and so the next return statement is eventually reached.