I have heard that flash channels are a way to make instant transactions off tangle. How does that happen and what is the process for setting up flash channels?
Flash is a bi-directional off-Tangle payment channel to enable instantaneous, high-throughput transactions. In essence, they provide a way for parties to transact at high frequency without waiting for each transaction to confirm on the public IOTA network. Instead, only two transactions will ever occur on the main IOTA network: opening and closing transactions of the Flash channel. An off-Tangle approach reduces the per-transaction overhead to a negligible level by creating signed transactions off the tangle and opens up a feeless transaction model for instant, token streaming.
When a channel is created each party deposits an equal amount of IOTA into a multi-signature address controlled by all parties. Once the initial deposits are confirmed the channel does not need to interact with the network until it is closed.
Once the parties have finished transacting, the final balances are published to the network. This approach can reduce thousands of transactions down to just two transactions.
What are some of the use cases of Flash Channels?
Any application that requires instant, bi-directional transactions between two parties. Some of these use cases include EV Charging, Bandwidth on Demand, Other Resources On-Demand (such as Computation, Storage etc.), Pay per Article, and many others.
Right now, Flash Channels aren't enabled for every user yet publically. The IOTA team set up a demo website to demonstrate its usage here: https://flash.tangle.works/
You can read more about how the technology behind flash channels work here, as wel as the source for the above information: https://blog.iota.org/instant-feeless-flash-channels-88572d9a4385