Should I bond iSCSI network connections?
You can LACP NICs you're planning to use with iSCSI, but only in one case - if both "sides" (target & initiator) support so-called "multiple connections per session". If they don't or this feature isn't configured properly (say # of connections = 1, which is obvious) you'll get uptime, but you won't get any performance increase. Reason is simple: every new TCP session should belong to another physical NIC, so with a few TCP sessions increase will be marginal. Preferred way to handle this is to use iSCSI MPIO rather than MC/S. See (this is SCST page, but it's the same for all the targets & initiators):
http://scst.sourceforge.net/mc_s.html
I am assuming by "bond" you mean "portchannel" or "etherchannel". I would not bond them. The multi-path driver and storage should be intelligent enough to handle using the multiple active paths and scheduling which path to send a storage transaction down.
Using a portchannel/bond on your server leaves the server with a single logical NIC meaning typically a single IP and MAC address. The switch and server would be involved in making load balancing decisions on the server to switch link rather than the storage and iSCSI initiator. I'd rather have the storage infrastructure making the load balancing decisions for storage traffic.
Most people as a best practice do a side A and side B setup on their storage/iSCSI initiators using different subnets for each. I've done it both ways and never had an issue.
You are correct that the storage infrastructure is smart enough to detect a storage path being down.