Stack is a last-in, first-out (LIFO) data structure where elements are inserted and removed from the top. Pushing adds an element to the top of the stack, while popping removes the top element. A stack overflow occurs when pushing to a full stack, while a stack underflow happens when popping an empty stack. Stack applications include system startup/shutdown processes, function calling where the last function called is the first to return, and argument passing in C where arguments are pushed right-to-left and popped left-to-right.