Working with blockchains
To start working with the blockchain, the first thing to look at is the type of application that you want to run.
Do I need to learn Haskell?
If you want to use front-end and you need backend for handling only transaction building and submitting then you will not need to learn Plutus/Haskell
If you plan to write on-chain code aka code that will live onchain then you will have to learn Plutus
To understand the blockchain first some basic theory is needed. Study about
2) Cardano node and architecture
1) Ledger rules
2) Key generation
The first and foremost thing that is needed is a cardano-node. It can be run locally or you can use services from Blockfrost
Current Choice of interaction with blockchain
1) Cardano-CLI: command-line
2) Ogmios: Ogmios is a Haskell tool with a Typescript API to query the cardano-node state such as the current utxo set or the current reward balance. The focus of the project is more towards providing a friendly API to the functionality of the cardano-node. Ogmios opens websocket through which clients can interact
3) Oura is a Rust tool fetching data from the node, processing it according to rules and filters, and then passing it along to a sink which handles the data. More specifically, Oura itself does not store data anywhere. It simply makes data available to you to decide how to process it.
4) Kupo is a Haskell tool for fetching data from the node and processing it according to rules in filters. It synchronizes data from the blockchain according to patterns matching addresses present in transaction outputs and builds a lookup table from matches to their associated output references, values and datum hashes.
5) Dbsync and Carp: https://dcspark.github.io/carp/docs/intro