Is it useful to index a column if it is already the first column in a composite index?
Given these queries, is it useful to create a separate (non-clustered) index on just the BillID column?


First, note that an index on BillId will include TaxCode.  The clustered index key is the row loacator for this table, so every index must contain it.  And for non-unique indexes, the clustered index key columns are added as index key columns to make the index physically unique.

It just won't include the rest of the columns on the leaf pages.  Such an index is sometimes useful, especially if you have a wide table and no other indexes.  

For instance a COUNT(*) or paging query could use this narrow unique index instead of having to scan the whole clustered index.

But for the question as stated, no, maintaining a second copy of the key index without the two non-key columns is unlikely to be useful.