> Why are `opt_chunk_buffer(ctg) <- 0`  `opt_chunk_size(ctg) <- 10000` being added? And why the value `0` and `10000`?

When processing a `LAScatalog` you define a chunk size to process sequentially small chunks that fit in memory. Your chunks can be smaller than your tiles, the size of your tiles or bigger than you tiles. If you put a number bigger than the size of your collection it mean that it processes everything at once into a single massive chunk. Here the value `10000` is totally arbitrary. You can put `100000`. Just put a number big enough such a only one chunk is generated.

The buffer is 0 because you don't need to load redundant data between the chunks. Anyway there is only one chunk. If what I'm saying is not clear you suggest reading [this chapter of the book](https://r-lidar.github.io/lidRbook/engine.html).

> And this `singlefile_ctg <- catalog_retile(ctg)` will write the merged LAS file into the same folder as given in `ctg = readLAScatalog("folder/")`? Because my output path is different from the input folder.

No it will write into `folder/singlefilename.las`. Again read the book chapter linked.

> On a side note when I run readLAScatalog(), I get the following warning, I don't know if this is going to be an issue while merging the files.

It depends if they are duplicated points. If two files overlap and each one contains a subset of points that can be found in both files (typically files in which a buffer has been added) yes it is a problem. If the bounding boxes overlap but the actual point cloud is continuous without duplicated region it is not a problem.