The difference is just whether the client app gets notified of new messages/replies by asking the server "Is there anything new?" on a set schedule (pull), or if the server sends the notification "Here's something new!" only when there is a new one (push).
Yep. I'm not sure if OP was looking for technically-pull clients specifically, though I have to imagine conventional notifications are a basic feature even on iOS.
Checking at a regular interval is "pull" (not push) though. Push means the client keeps a low-bandwidth connection to the server open so the server can notify the client as soon as something has happened.
"Free, efficient, no bullshit" is kind of the default for Linux software.