Abstraction involves focusing on essential information and ignoring details. Encapsulation groups related data and code together, but does not necessarily hide information. Information hiding focuses on making some details inaccessible to avoid impacting other parts of a system. While related, abstraction identifies important vs unnecessary information, encapsulation packages it, and information hiding makes some parts inaccessible.