Abstraction is a technique to manage complexity. It is based on separation of concerns: organizing programs so that you can work on one thing at a time in isolation.
Data abstraction refers to inventing new data types and separating functionality from representation.
Process abstraction refers to higher-order functions expressing computational processes in a compact form.
Assignment binds a name to a value, abstracting away the complexity of the value. Thereafter, the programmer can use the name.
A function encapsulates a behavior, abstracting away the complexity of its implementation. Only inputs and outputs are important to the programmer.