ke9tv (2023-10-23 02:40:32+00:00): Are you talking about place nodes, or admin boundaries?  The terms are used differently on the two.

On place nodes, the tag refers always to the importance of the place and never to the form of government.  city > town > village > hamlet.  This mostly got assigned by population, but there were a few overrides. The one that sticks in my mind is that Saranac Lake is tiny, but got `town` anyway because it has the only hospital and the only airport for many miles around.

Doing it this way rather than by form of government is essential to getting the labels right and having them appear at the right zoom levels.  Despite being legally a 'hamlet', Brentwood is a small city of >60,000 inhabitants. By contrast, the City of Sherrill is a village of fewer than 3,000 souls 

On boundary relations, the border_type indicates what sort of municipality is enclosed: city, borough, town, village, hamlet (ward, community district, ...). In some cases these are coterminous with Census-Determined Places, so you'll see 'hamlet;CDP' on a bunch of them.

New York doesn't have 'townships' - that's a term from other states that's often used in common speech in New York to describe the land belonging to a town.

What I suspect confused you is that the two places you mentioned (Newburgh, Cornwall) represent two fairly common corner cases.  In the case of Newburgh, there are two distinct municipalities: the Town of Newburgh, and the City of Newburgh. Neither is subject to the other.  The settlement commonly called Newburgh has a place=town node. (It was just short of the significance needed for place=city.)  The Town of Newburgh doesn't include that city, it's basically what was left over after the city was chartered. 
Because it messes up rendering if an admin boundary doesn't have a label, there's an arbitrary node created for it - and included as the 'label' member of the boundary relation.  This node is tagged place=locality not:place=town because there's no settlement of the given name where the node is placed.

Similarly, the Town of Cornwall is a higher-level admin entity. The Village of Cornwall-on-Hudson is within its borders and subject to it (Village governments have limited powers, and many government functions remain with the town).   Moreover, 'Cornwall' and 'Cornwall-on-Hudson' are distinct names. Once again, there's an arbitrary label created for the Town.

These arbitrary labels - there are a bunch of them - are all tagged not:place=town so that future mappers don't mistakenly conflate them with settlements that are distinct from them.

There are other corner cases that you'll likely stumble on:  villages that are in more than one town (Sorry. It is what it is); consolidated town/village (where a village annexed an entire town but the village government was not disbanded); former villate that disincorporated and was demoted to a hamlet (e.g. Rosendale), chartered city entirely on the land of an Indian Reservation (Salamanca); a village located entirely outside the town of the same name and still housing the town's administrative offices  (there are one or two of these, but I've mercifully forgotten where they are); and so on.  They're all handled the same way:  a `boundary=administrative` relation for every municipality (and some hamlets - others don't have defined borders), a `place` node for every named settlement (always tagged according to importance not government), and an artificial `place=locality not:place=town` node for those Towns that either don't have a settlement with the same name as the town, or have the named settlement outside the town's borders.  

The other oddity you might see is that the town of Palm Tree, the villages of Kiryas Joel, New Square and Kaser, and a number of settlements on the reservations in the western part of the state are named in the local language (Yiddish for the first four; one or another of the Haundenosaunee languages for the ones on the reservations). This is intentional; English is not the majority languages in those places.  (By the way, the unusual Unicode for the character in names like Onë꞉dagö꞉h that looks like a colon is also intentional. That character is a letter of the Seneca alphabet and not a punctuation mark.)

Yeah, it's complicated.  New York's government structure is, uhm, not straightforward.