Ok, you said the man pages were not detailed, so I will explain what they mean with an easy to understand metaphor about a moving guy (he goes by the name of
read and write up to BYTES bytes at a time
dd picks up something (boxes, vases, beds, rice, etc.), move where it needs to be and drops it off. Until he doesn't drop the load, he doesn't pick anything else. Now, when you need to tell him exactly how many objects he should pick per travel, this is what
bs do. You set the amount of data he will read and write. This is almost mandatory in all useful and common commands.
copy only N input blocks
This determinate the total amount of boxes he will move. Boxes in this context are the blocks on the disk. You tell him to move 5 boxes, he only moves 5 boxes even if there are more than 5 boxes (if there are less than 5 boxes, he will take a vase he found besides the boxes to add it up). If you tell
count only 5, and write it somewhere, he would copy the first 5 blocks he sees and writes them where you want.
seek=N skip N obs-sized blocks at start of output
The guy normally finds the first available place to drop the load, this is normally at the start (of the disk), and continues filling up until the end. Well, with this you tell
dd to start further up, say instead of the hall, start in one of the rooms further inside. It just "skip" the starting blocks.
Now, depending on what you are doing, you will need different combinations based on source and destination, along with the format they will be read and written. I recommend you to search for them separately.