DPLL algorithm is basically a combination of three concepts:
Pure literal rule
Answering your first question, the function call EXTEND(P, true, model) will return a new partial model in which P has true value.
And for your second question, the DPLL is essentially a backtracking algorithm, and that is the main idea behind the recursive calls.
The algorithm is building a solution while trying assignments, you have a partial solution that might prove successful or not-successful as you go on.
The basic idea of the algorithm is:
"Guess" a variable
Find all unit clauses created from the last assignment and assign the needed value
Iteratively retry step 2 until there is no change (found transitive closure)
If the current assignment cannot yield true for all clauses - fold back from recursion and retry a different assignment
If it can - "guess" another variable (recursively invoke and return to 1)
For a better understanding of the DPLL algorithm, refer the following link: