Note that RDF 1.1, standardised in February 2014, slightly edit this text:
Blank nodes are disjoint from IRIs and literals. Otherwise, the set of possible blank nodes is arbitrary. RDF makes no reference to any internal structure of blank nodes.
and adds a note about blank node identifiers:
Note:
Blank node identifiers are local identifiers that are used in some concrete RDF syntaxes or RDF store implementations. They are always locally scoped to the file or RDF store, and are not persistent or portable identifiers for blank nodes. Blank node identifiers are not part of the RDF abstract syntax, but are entirely dependent on the concrete syntax or implementation. The syntactic restrictions on blank node identifiers, if any, therefore also depend on the concrete RDF syntax or implementation. Implementations that handle blank node identifiers in concrete syntaxes need to be careful not to create the same blank node from multiple occurrences of the same blank node identifier except in situations where this is supported by the syntax.
There is also a new piece of spec that recommends a skolemisation scheme for blank node management.
In any case, you say that:
there is no way to know the "internal structure of blank nodes"
but this is not what the spec says. The spec simply says that it does not define such a way, which means that it is the responsibility of the implementers to decide how they want to internally represent and identify blank nodes. But I agree that the wording of the 2004 spec is confusing.