In the layman’s language, the abstraction specifies what has to be done, without specifying how it has to be done. The categorical dual of abstraction is encapsulation, which leads to hiding of the how. For the programmers, when I want to use a third party library I worry about what a library does rather than how it does something. At an atomic level, knowing only the signature of the function is enough for me to use it, not the entire function body. Abstraction helps in knowing what is necessary and speeding development.
However, there are times when how is also important. This can be best explained using an example. I was discussing with a friend why binary searches can break for certain values. The binary search can break depending on how it is written, leading to a break in my code. Knowledge of how it works would help me when I sit to debug. Similarly if I use a link-list traversal function it might help me to know whether it is iterative or recursive. Though the output might be the same, there can be side-effects that have an impact on the entire application. Transparency will let you have this knowledge.
Most of times transparency is required to debug if there are problems. Which is what Grady Booch calls failing of an abstraction in an unexpected way. Failures in an expected way can take the route of the principle of least astonishment, but solving the unexpected ones require transparency.
Note that transparency does not mean making everything open. Bill defines:
Transparency is the quality of how easy (or hard) it is to understand how a mechanism works.
Better transparency can lead to faster debugging and resolution of a problem.
All development should be as transparent as possible, that is, the mechanism should be easy to understand. However, I wonder if everyone needs to worry about it. The real world benefit of abstraction is responsibility. A single entity is responsible for an action, if it does not happen it has to take the responsibility of making it work. According to Joel all abstractions are leaky. When this happens transparency helps. Both are required, because I believe people who need to know about abstraction and transparency are different. Abstraction is for users, transparency is for problem solvers.