The *num.borrow() statement creates a temporary Ref<Option<i32>> and then automatically dereferences it. Your problem is the reference you get from * can't outlive the temporary, so hoisting the num.borrow() into a local variable will broaden the Ref<Option<i32>>'s lifetime.
use std::cell::RefCell;
pub fn max_level_sum(num: RefCell<Option<i32>>) {
let num = num;
let num_ref = num.borrow();
if let None = *num_ref {
println!("None")
}
}