I couldn’t find explicit confirmation of this, can it be 0?

1
No, post ID can not be 0 in the DB. But the value 0 has a special meaning in the code, indicating the currently handled post (if the context is set up correctly)