Launch file is useful when you want to start/launch many nodes at once without any need to do "rosrun for every node".
In the package, create a folder by the name launch and create a filename.launch file.
It always start with
<launch>
and if some parameters should be set then
<param name="use_sim_time" value="true" />
To start a node
<node pkg="name_of_package" type="name_of_packge" name="name_of_executable"
output="screen"/>
Example
<node pkg="sure_on_cloud" type="estimate_transform_svd" name="estimate_transform_svd"
output="screen"/>
In the above way, one can call multiple nodes from different packages.
<remap from="/camera/depth/image_rect_raw" to="/camera/depth/image"/>
Nodelets can also be initialized. Sorry I dont know what they are, but they can also be initialized from the example below
<node pkg="nodelet" type="nodelet" name="standalone_nodelet" args="manager"/>
<node pkg="nodelet" type="nodelet" name="point_cloud_xyz"
args="load depth_image_proc/point_cloud_xyz standalone_nodelet">
Some packages have their topics already set to specific names. They can be remapped to different names.
<remap from="/image_rect" to="/camera/depth/image"/>
<remap from="/points" to="/camera/depth/points"/>
<remap from="/camera_info" to="/camera/depth/camera_info"/>
</node>
</launch>
start with $ gedit turtlemimic.launch, then a new window with gedit will pop up, just paste those stuff, save and close.