Can one make MySQL cluster on a unique index rather than a primary key?
PRIMARY KEY


InnoDB has exactly one PRIMARY KEY on each table.
The PRIMARY KEY is always clustered; there cannot be any other "clustered" index.
That PK is either an explicitly stated PK (this is preferred), the first UNIQUE key (with certain limitations), or a hidden sequence number (not quite the same as `AUTO_INCREMENT; 6 bytes).
The PK is UNIQUE and is and index.
The PK (and other indexes) may contain multiple columns ("composite" index.
The table is structured as a BTree (actually a B+Tree), with all columns present, and BTree is ordered according to the PK.


Secondary Keys


All other indexes are called "secondary indexes".  ("key" == "index")
The structure is a B+Tree, ordered according to the key
The "rows" of this BTree contain copies of the column(s) of the PRIMARY KEY (that is, the 'clustered index').  This is how the secondary key can get to the row.
Note that looking up a row via a secondary key requires drilling down two BTrees.  (Unless it is a "covering" index).
A UNIQUE KEY is two things: a secondary key (unless promoted to PK), and a "uniqueness constraint".


Other notes


InnoDB has not concept of a "ROWNUM" or "row locator", unlike some other vendors.  The PK serves as the row locator.
MySQL has no "Heap" or "Bit" indexes on InnoDB.
InnoDB has only BTree, SPATIAL, and FULLTEXT; I am not discussion the latter two in this Answer.
For most purposes, it does not matter whether you create the indexes inside the CREATE TABLE statement, or do CREATE INDEX later.  Ditto for defining FOREIGN KEYs.
Structurally, the PK+data is a B+Tree; each secondary index is a B+Tree.  These B+Trees look, feel, smell, etc, identical.  The only difference is what you find in the 'rows'.


AUTO_INCREMENT


There are many caveats.  It is not necessarily consecutive numbers; there are many ways that gaps can occur.  Only trust that they will be 'unique'.
AUTO_INCREMENT does not have to be declared PRIMARY KEY, or even UNIQUE.


A trick.  It is possible to do the following.  Is it what you are fishing for??  

CREATE TABLE ... (
  id INT AUTO_INCREMENT,
  foo ...,
  ...
  PRIMARY KEY (foo, id),  -- to get clustering on `foo` and uniqueness (via `id`)
  INDEX(id)               -- sufficient to keep AUTO_INCREMENT happy.
) ENGINE=InnoDB;