but I'm still unclear on what an MIB actually _is_,
A MIB is the database schema for an object-oriented hierarchical database. The key words there are schema and hierarchical. Schema means that it describes how the data is organized and hierarchical means that it is *NOT* organized in tables like a relational database, but in a tree structure, like DNS gone mad.
what problem ASN.1 actually solves,
When you transmit data across a wire, you need to be able to parse the individual data elements out of the bitstream at the receiving end. ASN.1 is merely one way of encoding data so that it can be reliably parsed at the other end. If you have ever had problems loading a CSV file into a database, you will realize the importance of having a defined standard for encoding data so that it can be reliably decoded by an arbitrary recipient. Theoretically, SNMP is better than parsing IOS command output, but in practice, it may be hard or impossible to get the information that you want via SNMP.
and more to the point how the whole shebang (I'm using net-snmpd) is typically used.
Typically? I think that typically people use the names from the schemas (MIBs) to identify the key to the data that they want, then put the numeric keys directly into their application. That way you can run it on any server regardless of whether the MIB(Schema) is available or not. But if you do stick keys like .1.3.6.1.4.1.2021.4.11.0 in your code it is a good idea to include the named version of the key in the comments.
I believe that what I need to do is get any/all MIBs for all "entities" (typically networking hardware devices) that I want to monitor, and import them into the net-snmp configuration somehow, and then software that calls on net-snmp can access the information from the devices.
Is this accurate?
That would work but it can be tricky to get the RIGHT MIBs that match the data actually available in your device. Also, reading MIBs can be misleading because you will see things that look great, but don't work because they are deprecated or because the router vendor didn't implement it the way that you think.
Will I need to import MIBs to every net mgmt application? Should they be carefully accounted for and synchronized, or can I treat them like a typical configuration file, where it is obvious if I need it and I get them as needed?
Now you see where the SNMP alligator swamp lies. If you are building your own network management applications, you may be happier only putting the MIBs on the development machines, and putting the numeric keys into your application code, or better yet, into your application's config file. MIBs have lots of stuff that you probably don't need unless you are allowing users to browse through and query arbitrary data. --Michael Dillon