This syntax is defined in the C standard, p113, but I didn't find the meaning of it, but that's because I don't know how to read grammar rules.

Because concrete_struct is another struct, that contains functions looking like a constructor and a virtual destructor, and because I read elsewhere that classes in C++ are actually struct with public members by default, I guess that this is the way of doing inheritance with struct in C (because it is the C standard...).

About that syntax in C:

So according to C it must be struct, followed by an optional identifer, followed by {. Or only struct followed by an identifer (a forward declaration). In neither case there is room for an additional : ... in there.

The : mentioned later in that paragraph of the standard is about bit-field widths, like this;

struct foo {
unsigned a : 4;
unsigned b : 3;
};

Here a and b are only 4 and 3 bits wide, but that's different syntax than in the question.

The standard document you linked to does not describe such a syntax, that I could see.

This looks like C++, where it indeed is used to say that the struct inherits another struct. The TeXmacs compilation page recommends you to use a C++ compiler, which (to me) implies that it's written in C++, not C.

I took a quick look in the TeXmacs source archive, and saw lots of ".cpp" files.